2013-02-14 156 views
1

我正在瀏覽互聯網以找到適用於電話號碼的正則表達式,但我發現的正則表達式並非我需要的。全球電話號碼的Javascript正則表達式

我的情況下可接受的電話號碼類型必須符合以下規則:

  • 可與+0-9
  • 啓動所有其他字符串只允許有0-9-和空間(最好數字之間只有1個空格)

我試過目前爲止:/^\+[\-\d\s]/但我沒有得到正確的結果。我試着閱讀一些教程,但我對此很新,看來我缺少一些東西。

例如,可接受的電話號碼將是:30 6995 4488551(允許空格)或0030 6995 4488551等

任何幫助將不勝感激! :)

+0

短劃線,空格,連字符等格式化。不要允許或拒絕他們 - 在測試時忽略他們。 – Quentin 2013-02-14 17:18:30

+0

也許這就是你要找的東西? [鏈接] http://stackoverflow.com/questions/4147614/javascript-regular-expression-for-international-phone-number [/ link] – itsid 2013-02-14 17:18:52

+0

謝謝你的回覆,但那個話題的答案不是我所需要的,因爲在答案中,他們只是去掉他們不想要的角色,然後驗證剩下的角色。我認爲這不是一個處理它的好方法。我想讓用戶輸入正確的字符串。例如,用戶不能在任何他們想要的地方輸入'+',但只能在開頭輸入。 – 2013-02-14 17:28:26

回答

1

您的正則表達式匹配任何以+開頭的單詞,後跟單個-,數字或空格字符。所以,你會匹配,例如:

  • + 4qwertzuiopasdfghjkl
  • + -asdfasdfasdfasdf

,我建議你看看上http://www.regular-expressions.info/的例子和教程。至於你的電話號碼的正則表達式更好的將是:

/^\+?[\d -]+$/ 

這會匹配所有有效的電話號碼,但也無效結構像+---------或者乾脆+後面有個空格。如果你想真的接近否認很多無效組合,我建議你閱讀this,但正如你可以看到正則表達式變得混亂。

1

添加到migg的答案 - 你可以在正則表達式測試後添加更多的過濾器,例如,可以確保表達式中至少有最少數量的數字,或者你有什麼。 例如,

if !(phone_number.match(/\d/g).length == 9) inValidate()