[英]Regex - Validate Mobile Phone with Optional Country Code
我目前正在研究正則表達式。 我真的不知道/不知道如何編寫帶有2個條件的表達式。 還是我必須為每種情況編寫2個正則表達式?
我在說的是
我的html字段中有一個txtMobile字段
<label for="txtMobile">Mobile:*</label>
<input id="txtMobile" type="text" name="txtMobile" size="22" maxlength="22">
在我的javascript文件中,我嘗試使用以下規則創建表達式
格式:(+ ##)###-###-#### / ####擴展名是可選的,它可以不帶國家/地區代碼開始。
是否可以在單個表達式中執行任何操作,或者如果我的javascript文件中每種情況的條件都必須鍵入?
這是我所做的/^([0-9]{3})\\-([0-9]{3})\\-([0-9]{4})\\/([0-9]{4})$/
通過使用?
將組設為可選 意思是“零或前述之一”:
/^([0-9]{3}-)?([0-9]{3})\-([0-9]{4})(\/[0-9]{4})?$/
?
是修飾符,例如*
(前面的零個或多個)和+
(前面的一個或多個)。
這使得這兩個組都是可選的,這意味着具有所有三個組成部分(國家代碼,號碼,分機號)的數字,具有兩個可選組成部分(數字+擴展名,國家/地區代碼+數字)的數字以及沒有任何可選組成部分的數字將被正則表達式接受。
編輯
您在評論中使用正則表達式的錯誤是?
在逸出 )
,表示零或實際)
之一,而不是一組。 您需要的是:
^(\(\+[0-9]{2}\))?([0-9]{3}-)?([0-9]{3})\-([0-9]{4})(\/[0-9]{4})?$
使用?
表示可選原子。
/^(\(+[0-9]{2}\))?...
在這里,我將前面的組設為可選,並注意到括號是如何將幾個原子分組為一個原子。 文字括號被轉義。 這是正則表達式的開始,它允許遵循您的格式的可選國家代碼。 允許可選的擴展留給讀者練習。 :)
像其他家伙說的那樣?
匹配進程令牌的0或1。
/^(\(\+\d{1,3}\))?(\d{3}-){2}\d{4}(\/\d{3,4})?$/
火柴:
999-999-9999
(+1)999-999-9999
(+11)999-999-9999
(+111)999-999-9999
999-999-9999/000
(+1)999-999-9999/000
(+11)999-999-9999/000
(+111)999-999-9999/000
999-999-9999/0000
(+1)999-999-9999/0000
(+11)999-999-9999/0000
(+111)999-999-9999/0000
我喜歡使用此工具: http : //gskinner.com/RegExr/
它實現了Flash的RegEx版本,該版本與Javascript並不完全相同。 但這對於大多數工作來說已經足夠接近了。 如果有人可以建議使用JS RegEx工具,那就更好了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.