2013-02-21 148 views
0

我用這個正則表達式來驗證巴西手機:可能包含8或9個數字的正則表達式 - 如何操作?

/^(\([0-9]{2}\))\s([9]{1})?([0-9]{4})-([0-9]{4})$/ 

輸出:(31) 8876-3234 VALID

但是聖保羅狀態具有9個數字蜂窩電話:

輸出SP(31) 98876-3234

當前正則表達式需要調整以接受也是有效的,a提示我應該改變什麼?

+0

該正則表達式已經匹配額外的領先9. – 2013-02-21 19:28:13

+0

適用於我沒有任何改變。 http://regexr.com?33s2j – Achrome 2013-02-21 19:28:16

+0

順便說一句,你可以使用'\ d'而不是'[0-9]'來簡化你的正則表達式。另外'[9] {1}'是一個只包含一個字符並且重複一次的字符類,就像只寫'9'一樣。 – matts 2013-02-21 19:30:22

回答

4

您可以使用{m,n}量詞來創建範圍:

/^(\([0-9]{2}\))\s([0-9]{4,5})-([0-9]{4})$/ 

雖然你的正則表達式似乎要被罰款,因爲它有一個可選的9 4個位數之前相匹配。但是,如果有任何可能的地方,除了9之外,你可以使用這個正則表達式。

+0

該死的,我怎麼會在我的搜索中錯過? >。>非常感謝! - 在10分鐘內接受答案 – 2013-02-21 19:29:14

+0

@ user2056484。不客氣:) – 2013-02-21 19:30:30

+0

在一個非相關話題中,你知道一個簡單的方法:當我點擊一個被屏蔽的輸入字段(帶有預定義的字段)時,總是轉到第一個字符而不是從中間開始它? – 2013-02-21 19:31:43

相關問題