正则表达式验证捕获5个不同的重复数字

时间:2015-04-06 16:44:35

标签: regex validation

我有一个正则表达式,例如验证重复数字 像111-111-1111 or 2222222222 or 333.333.3333这样的数字将返回为不匹配。

但是1234567789 or 789-234-5671之类的数字是匹配的。我无法验证1234512345 or 456-784-5678之类的数字。

有人可以帮助我更新我的正则表达式,以便它也可以验证并返回与1234512345 or 456-784-5678等数字不匹配的内容吗?

我现在的正则表达式是

^(?=(?!([0-9])\1{2}[-. ]*\1{3}[-. ]*\1{4}$))\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$

1 个答案:

答案 0 :(得分:0)

我建议在使用连字符验证数字之前使用一些预处理,因为似乎不可能使用连字符并使用反向引用来检查它们是否已经匹配,因为这可能永远不会发生。

如果您的代码是JavaScript代码,则可以使用:

function validateNumber(str) {
  var re = /^(?=(?!([0-9]+)\1))(?=(?!([0-9])\1{2}[-. ]*\1{3}[-. ]*\1{4}$))\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/gm; 
 if ((m = re.exec(str.replace(/-/g, ''))) !== null) {
    return true;
 }
  return false;
}

var case1 = validateNumber('1234512345');
var case2 = validateNumber('456-784-5678');
document.getElementById("res").innerHTML = "1234512345: " + case1 + "<br>456-784-5678: " + case2;
<div id="res"/>