2012-08-16 96 views
0

我想确保手机#不是全部相同的字符,例如1111111111 我使用的代码工作,但有成为一个更干净的方式。我尝试过循环,但一次只比较两个连续的字符。这是我现在正在使用的:如何检查一个数组的元素是否相同的JavaScript(超过2个元素)

if (MainPhone.value != "") 
      {    
       if ((MainPhone.value == 1111111111) || (MainPhone.value == 2222222222) || (MainPhone.value == 3333333333) || (MainPhone.value == 4444444444) || (MainPhone.value == 5555555555) || (MainPhone.value == 6666666666) || (MainPhone.value == 7777777777) || (MainPhone.value == 8888888888) || (MainPhone.value == 9999999999) || (MainPhone.value == 0000000000)) 
       { 
       window.alert("Phone Number is Invalid"); 
       MainPhone.focus(); 
       return false; 
       } 
      } 

我发现这个建议是为别人的问题,但不能得到它的工作。

var dup = MainPhone.value.split(''); 
if all(dup == dup(1)) 
+1

如果你谷歌“验证电话号码javscript”,你可以很容易地找到一些*更*强大的方法来验证电话号码,例如这篇博文:http://blog.stevenlevithan.com/archives/validate-phone -数。你所要做的并不能确保一个电话号码是有效的,它只是拒绝一些非常具体的无效案件。 – 2012-08-16 18:23:11

回答

1

您可以使用这样的正则表达式来检查是否所有字符是相同的:

^(.)\1*$ 

实施例:

var phone = '11111111'; 

if (/^(.)\1*$/.test(phone)) { 
    alert('All the same.'); 
} 

演示:http://jsfiddle.net/Guffa/3V5en/


正则表达式的说明:

^ = matches start of the string 
(.) = captures one character 
\1 = matches the first capture 
* = zero or more times 
$ = matches end of the string 

所以,它抓住了第一个字符,如果它们是相同字符的其他部分相匹配。

+0

太棒了!这正是我正在寻找的。 – Allison 2012-08-16 21:59:05

+0

感谢ton @Guffa – Allison 2012-08-16 22:00:13

2

我会尝试这样的事:

var phone = '11111211'; 
var digits = phone.split('').sort(); 
var test = digits[0] == digits[digits.length - 1]; 

简单数组排序和比较第一和最后一个元素..

+0

谢谢,但我需要比较所有的字符。我需要避免手机#2222222222 – Allison 2012-08-16 18:30:02

+0

如果第一个字符和最后一个字符相同(按字​​母顺序排序),则所有字符必须相同。 – 2012-08-16 18:31:36

+0

啊。好主意。我会在几分钟内尝试。谢谢! – Allison 2012-08-16 18:42:27

相关问题