javascript - 逆向工程正则表达式模式以查找 token 数和预期匹配的长度

标签 javascript jquery regex

为了验证表单中的某些字段,我需要找到特定正则表达式指定的标记数,以及该正则表达式指定的匹配项的长度。例如,

  1. 对于模式 [0-9]{3},[0-9]{2},我需要找到 5 个长度和 2 个 token 数。
  2. 对于模式 [0-9]{2}/[0-9]{2}/[0-9]{4},我需要找到 8 的长度和 3 的数量代币。

任何人都可以指明方向吗?

最佳答案

虽然您没有要求用正则表达式解决这个问题,但我们会的。在正则表达式上运行的正则表达式!那是正则表达式吗?

乍一看,这项任务听起来很复杂。我们是否需要编写一个正则表达式引擎来解析您的表达式?

幸运的是,如果您的量词都在 {curlies} 中,则有一个简单的解决方案。如果我们匹配 curlies 之间的所有数字,匹配的数量将是标记的数量,长度将是匹配的总和。

我们简单的正则表达式

{(\d+)}

好的,但我们如何在代码中实现它?

这是一个完整的脚本,可以输出 token 的数量和长度。查看 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>

关于javascript - 逆向工程正则表达式模式以查找 token 数和预期匹配的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23879147/

相关文章:

regex - 正则表达式接受从 0 到 100 的所有小数

javascript - 在 Twitter Bootstrap 主题之间切换?

javascript - 什么是 String 或者它从哪里来?

javascript - 将解析后的 XML 数据绑定(bind)到 AngularJS 变量

javascript - 单页应用程序 (SPA) 与全栈应用程序。限制和优势。

jquery - Ajax/JQuery/JSON 表单

javascript - 在 jquery $({}) 中包装普通的 javascript 对象

python - 在python中使用正则表达式在字符串列表中查找匹配关键字后的下一个单词

php - 在每次字符更改时将空格插入字符串

javascript - 如何将 jQuery Validation 插件与元数据、jQuery Forms 和 xVal 一起使用?