警报用户,如果输入包含连续的数字或字符

时间:2014-04-14 19:17:21

标签: javascript regex

我有以下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个的序列号,并且没有出现警报。

4 个答案:

答案 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
}
祝你好运 :)