我有以下Javascript:
else if(serialNumber == (/([0-9a-zA-Z\_\\])\1{3,}/)){
alert('Serial Number cannot have a single digit or character repeat more than 3 times consecutively.');
我通过http://regex101.com/r/dH3gQ0运行正则表达式,它正在运行。我不确定我在代码中缺少什么。发生的事情一无所获。我输入了一个连续编号超过3个的序列号,并且没有出现警报。
答案 0 :(得分:1)
您需要实际测试表达式,如下所示:
if(serialNumber.match(/([0-9a-zA-Z\_\\])\1{3,}/) !== null)
或更具语义正确性:
if(/([0-9a-zA-Z\_\\])\1{3,}/.test(serialNumber))
答案 1 :(得分:0)
你应该测试它:
var serialNumber ='TESTSERIAL9';
var reg= /([0-9a-zA-Z\_\\])\1{3,}/;
console.log(reg.test(serialNumber));
此致
答案 2 :(得分:0)
您正在使用==
运算符,这会检查serialNumber
是否与正则表达式/([0-9a-zA-Z\_\\])\1{3,}/
是同一个对象,始终是false
,你是什么相反应该使用RegExp.prototype.test()
。
else if ( /([0-9a-zA-Z\_\\])\1{3,}/.test(serialNumber) ) {
alert('Serial Number cannot have a single digit or character repeat more than 3 times consecutively.');
答案 3 :(得分:0)
这是一个例子......
如果允许的字符为[A-Za-z0-9_]
,则可以使用\w
// true if 4 consecutive characters are entered
if( /(\w)\1{3}/.test(serialNumber)){
// your code/alert
}
如果允许的字符包含额外的反斜杠,那么
// true if 4 consecutive characters are entered
if( /([\w\\])\1{3}/.test(serialNumber)){
// your code/alert
}
最后,上面是区分大小写的,所以'aaAAaa'不会导致警报。 如果您想要一个不区分大小写的版本,那么:
// true if 4 consecutive characters are entered
if( /([\w\\])\1{3}/i.test(serialNumber)){
// your code/alert
}
祝你好运
:)