[英]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.