簡體   English   中英

正則表達式-使用可選的國家/地區代碼驗證手機

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM