要验证表单中的某些字段,我需要查找特定正则表达式指定的标记数,以及该正则表达式指定的匹配长度。例如,
[0-9]{3},[0-9]{2}
,我需要找到5的长度和2的令牌数。[0-9]{2}/[0-9]{2}/[0-9]{4}
,我需要找到8个长度和3个令牌数。任何人都可以指出这样做的方向吗?
答案 0 :(得分:1)
虽然你没有要求用正则表达式解决这个问题,但我们会。在正则表达式上运行的正则表达式!这是正则表达式吗?
乍一看,这个任务听起来很复杂。我们是否需要编写正则表达式引擎来解析您的exprssions?
幸运的是,如果你的量词都在{curlies}
里面,那么就有一个简单的解决方案。如果我们匹配curlies之间的所有数字,匹配的数量将是标记的数量,并且长度将是匹配的总和。
我们简单的正则表达式
{(\d+)}
好的,但我们如何在代码中实现这一点?
这是一个完整的脚本,输出令牌的数量和长度。查看online demo的结果。
<script>
var subject = '[0-9]{2}/[0-9]{2}/[0-9]{4}';
var regex = /{(\d+)}/g;
var group1Caps = [];
var match = regex.exec(subject);
// Place Group 1 captures in an array
while (match != null) {
if( match[1] != null ) group1Caps.push(match[1]);
match = regex.exec(subject);
}
// How many tokens are there?
document.write("*** Number of Tokens ***<br>");
document.write(group1Caps.length);
// What length are the expected matches?
var counter = 0;
document.write("<br>*** Length of Expected Matches ***<br>");
if (group1Caps.length > 0) {
for (key in group1Caps) counter += parseInt(group1Caps[key]);
}
document.write(counter,"<br>")
</script>