拒绝javascript中所有相同数字的电话号码?

时间:2014-04-24 14:42:25

标签: javascript regex

我希望拒绝所有相同数字的电话号码。

示例:222-222-2222333-333-3333

我试图愚蠢地循环遍历所有角色,但这是一个坏主意。

5 个答案:

答案 0 :(得分:4)

要测试一个字符串是否只包含一个不同的数字字符(加上可能是任意多个非数字字符),您可以使用:

function areAllDigitsTheSame(phoneNumber) {
    return /^\D*(\d)(?:\D*|\1)*$/.test(phoneNumber);
}

要测试字符串是否与所有数字相同的确切模式###-###-####匹配,您可以使用:

function areAllDigitsTheSame(phoneNumber) {
    return /^(\d)\1\1-\1\1\1-\1\1\1\1$/.test(phoneNumber);
}

在这两种情况下,关键点在于正则表达式中的()表示法"捕获"它匹配的内容并使其可用于反向引用(\1)以指定它仅匹配相同的子字符串。

答案 1 :(得分:3)

您可以使用此正则表达式:

^(?!(\d)\1+(?:-\1+){2}$)\d+(-\d+){2}$

Online Demo

答案 2 :(得分:2)

如果您想匹配确切的模式

var str = '222-222-2222';
allowed(str); // false, console log bad

var str = '123-456-7890';
allowed(str); // true, console log good

function allowed(n) {

  if (/(\d)\1{2}-\1{3}-\1{4}/.test(n)) { console.log('bad'); return false; }
  console.log('good');
  return true;
} 

以下是fiddle

祝你好运 :)

答案 3 :(得分:1)

你可以这样做:

function AllSameDigits(str) {
    return /^(\d)\1+$/.test(str.replace(/[^\d]/g,''));
}

str='222-222-2222';
alert(AllSameDigits(str));

这会删除所有非数字字符,然后问:字符串是否以数字开头,只包含重复相同数字的相同数字?

答案 4 :(得分:0)

您需要先删除连字符,然后使用以下方法检查您的号码:

^(\d)\1+$

演示:http://regex101.com/r/iJ2aB0