繁体   English   中英

如何将流计数器插入正则表达式中?

[英]How can i Insert the flow counter inside a regular expression?

我试图将流计数器“ i”插入一个简单的Reg Exp。 通过此流程,我想验证一个数字字符串中是否仅出现0到9之间的一种数字类型。至少一个数字必须与字符串中的另一个数字不同

//Example:
var myString = "2222222222222222"; //Should Output Error
var myString2 = "2222222222222228"; //Should be OK

for(var i = 0; i <= 9; i++)
{
    //I'm trying here to put the 'i' inside the regular expression
    var count = (myString.match(/[i]/g) || []).length;
    if(count == 16)
    {
       console.log("ERROR!");
       break;
    }
}

您可以执行以下操作:

var regex = new RegExp(i, 'g');
var count = (myString.match(regex) || []).length;

应该工作正常

如果您的目标是匹配16位数字并确保它们不完全相同,则可以使用单个正则表达式进行此操作:

 //Example: var myString = "2222222222222222"; //Should Output Error var myString2 = "2222222222222228"; //Should be OK var tester = /(\\d)\\1{15}/ function testString(str) { if (tester.test(str)) { console.log(str + " - ERROR!!!"); } else { console.log(str + " - OK"); } } testString(myString); testString(myString2); 

您在一个组中匹配一个数字,然后查看是否又重复了15次。

使用new RegExp从字符串构建正则表达式。

例如,使\\d[1]\\ \\d[2]\\等...您将执行以下操作(使用模板文字)

for(var i = 0; i <= 9; i++)
{
    //I'm trying here to put the 'i' inside the regular expression
    var count = (myString.match(new RegExp(`\d{${i}}`, 'g') || []).length; // <-- here
    if(count == 16)
    {
       console.log("ERROR!");
       break;
    }
}

或字符串组成

for(var i = 0; i <= 9; i++)
{
    //I'm trying here to put the 'i' inside the regular expression
    var count = (myString.match(new RegExp('\d{' + i + '}', 'g') || []).length; // <-- here
    if(count == 16)
    {
       console.log("ERROR!");
       break;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM