2013-04-08 23 views
-4

我知道這個問題在這裏被問過像一千次,但我還沒有得到它的掛鉤。如果匹配電話號碼格式,我需要檢查文本框的幫助。格式應該是這樣的:使用電話號碼的正則表達式

000-000-000(+000)00-000-000。有誰能夠幫助我 ?

+0

顯示您的相關問題,當前的代碼。 – 2013-04-08 08:54:44

回答

5

給這個模式的嘗試,

^(\(\+\d{3}\)|\d)\d{2}(-\d{3}){2}$ 

截圖:

enter image description here

生成說明:在一行的開頭

  • 斷言位置(在開始字符串或換行符後)^
  • 匹配正則表達式的下方,捕獲其匹配到反向引用編號1 (\(\+\d{3}\)|\d)
    • 匹配任一正則表達式的下方(在嘗試僅當此一個發生故障的下一個替換)\(\+\d{3}\)
      • 匹配的字符「( 」字面上\(
      • 匹配字符‘+’的字面\+
      • 匹配單個數字0..9 \d{3}
        • 恰好3次{3}
      • 匹配的字符「)」的字面\)
    • 或匹配正則表達式下面號碼2(如果這一個不匹配整個組失敗)\d
      • 匹配一個數字0..9 \d
  • 匹配單個數字0..9 \d{2}
    • 究竟2倍{2}
  • 符合以下正則表達式和捕獲其匹配到反向引用數字2 (-\d{3}){2}
    • 究竟2次{2}
    • 注意:重複編輯捕獲組本身。該小組將只捕獲最後一次迭代。在重複組周圍放置一個捕獲組來捕獲所有迭代。 {2}
    • 匹配字符「 - 」的字面意思-
    • 匹配一個數字0 ..9 \d{3}
      • 恰好3次{3}
  • 在一行的末尾斷言位置(在字符串的末尾或前一個換行符)$
0
(?:\d|\(\+\d{3}\))\d{2}(?:-\d{3}){2} 

或者,如果您關注性能,最好將其更改爲:

(?:\(\+\d{3}\)|\d)\d{2}(?:-\d{3}){2} 
1

模式1是\d{3}\-\d{3}\-\d{3}

模式2是\(\+\d{3}\)\d{2}\-d{3}\-\d{3}

所以你需要匹配樣式1或模式2:

(\d{3}\-\d{3}\-\d{3})|(\(\+\d{3}\)\d{2}\-d{3}\-\d{3})