我希望拒绝所有相同数字的电话号码。
示例:222-222-2222
或333-333-3333
我试图愚蠢地循环遍历所有角色,但这是一个坏主意。
答案 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)
答案 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)