2016-12-01 72 views
3

我是新來的RegEx我想驗證一個電話號碼10位和+和2位國家代碼作爲可選項。嘗試了很少的正則表達式,但我無法制作+和國家代碼作爲可選^[+]*\d[0-9]{10,12}$。任何人都可以告訴我我錯在哪裏。提前致謝。驗證10位數的電話號碼

回答

2

您需要使用一個可選的非捕獲組來包圍前兩個數字:

^[+]?(?:[0-9]{2})?[0-9]{10}$ 
    ^^^^^^^^^^^^^ 

regex demo

詳細

  • ^ - 串
  • 的開始
  • [+]? - 任選+
  • (?:[0-9]{2})? - 任選序列2的數字
  • [0-9]{10} - 10個數字
  • $ - 字符串結尾。
+0

@OP所以我錯誤地認爲加號和國家代碼是「一個包」,因爲這可以加10位數字?然後就像標題所說的那樣,它並不是真正的10位電話號碼 - 它是8-10位數的可選國家代碼。 – ClasG

+0

@ClasG:使用此正則表達式驗證的總數字量爲10或12,而不是8-10。我明白'+'是可選的,因爲OP旁邊有'*'量詞。這個問題缺乏細節,所以我嘗試使用OP正則表達式,並且只介紹了使國家代碼數字可選的更改。 –

1

你可以你使用HTML5模式試試這個

^([0|\+[0-9]{1,5})?([7-9][0-9]{9})$ 
-1

?如果是的話,下面可能是你的答案,

<input type="text" pattern="[\+][\(]\d{2}[\)]\d{10}" required/> 

格式:+(91)1234567890

+0

對不起,但這是一個寫得不好的正則表達式,它不符合給出的一個標準。 – ClasG

+0

@ClasG,好的,謝謝你的糾正,我試着用這兩個標準之一是有和沒有+和括號2位數字,即(91),更新的模式 – Vinod

+0

'^(?:[\ +] [\(] \ d {2} [\]])?\ d {10} $'我測試過這個例子,下面的例子是1234567890,+(91)1234567890 – Vinod

3

如果我正確理解你的問題(這與可選部分有點模糊),沒有給出的答案會做你想做的。因此,這裏是我的旅途吧;)

^(?:\+\d\d)?\d{10}$ 

這將啓動與該+國家代碼的可選非捕獲組。然後是10位數字。

See it here at regex101

+0

但是,如果有人需要「+」綁定到國家/地區代碼,這可能很有用。 –