正则表达式匹配由破折号分隔的组中的字符数?

时间:2017-03-27 19:03:25

标签: regex

这是我要匹配的字符串76c24efd-ec42-492a-92df-c62cfd4540a3。以下正则表达式将匹配36个字符串长度的字符串和字母数字字符和“ - ”。

[a-zA-Z0-9\-]{36}

我正在尝试添加到此正则表达式,因此仅在<8 chars> - <4 chars> - <4 chars> - <4 chars> - <12 chars>

时才匹配

1 个答案:

答案 0 :(得分:0)

以下内容将匹配一组8个字符后跟一个短划线,然后是一组4个字符,后跟短划线3次,然后是一组12个字符。

^[a-z0-9]{8}-(?:[a-z0-9]{4}-){3}[a-z0-9]{12}$/

这是一个简短的JavaScript测试,显示结果。

$('.test').each(function(row, item) {
   var val = $($(item).children()[0]).html()
   var result = /^[a-z0-9]{8}-(?:[a-z0-9]{4}-){3}[a-z0-9]{12}$/gi.test(val);
   $($(item).children()[1]).html(result.toString())
});
th {
   text-align:left;
   padding-right:10px;
}
td {
    border: 1px solid #ccc;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table style="border: 1px solid black">
   <tr><th>Test</th><th>Result</th><th>Desired Result</th></tr>
   <tr class="test"><td>76c24efd-ec42-492a-92df-c62cfd4540a3</td><td></td><td>Good</td></tr>
   <tr class="test"><td>76c24efd-ecz42-492a-92df-c62cfd4540a3</td><td></td><td>Bad Length - 2nd segment too long</td></tr>
   <tr class="test"><td>76c24efd-ec2-492a-92df-c62cfd4540a31</td><td></td><td>Bad Segment Lengths</td></tr>
   <tr class="test"><td>76$24efd-ec42-492a-92df-c62cfd4540a3</td><td></td><td>Bad Char ($)</td></tr>
</table>

相关问题