2012-08-16 25 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

相關問題