手機號驗證正則表達式

開發過程中出現手機號驗證不對的問題,找到validator.js文件中的相應部分,現將分析及解決分享

表達式分析:
“/”代表一個正則表達式

“^”代表字符串的開始位置

“$”代表字符串的結束位置

“?”代表匹配前面的字符一個或零個,所以這裏0?的意思是手機號碼可以以0開頭或不以0開頭。

“[]”代表只能匹配一個字符,裏面是可選的意思

“{}”代表中的數字代表匹配前面字符的個數


/^0?(13[0-9]|15[012356789]|17[013678]|18[0-9]|14[57])[0-9]{8}$/

驗證11位的手機號碼,先從13開始,因爲從130-139都有所以可選區間是[0-9],15開頭的號碼沒有154所以[]裏面沒有4這個數字,當然也可以寫成[0-35-9],下面18和14開的號碼同上。

小括號括起來的代表一個子表達式,裏面是4個可選分支分別用“|”來區分開來,在正則中“|”的優先級是最低的,這裏每個分支匹配的都是3個字符(一個[]只能匹配一個字符,裏面是可選的意思),也就是手機號碼的前3位數字,那麼後面還有8位數字需要匹配,可以是0-9的任意字符,所以是“[0-9]{8}”,{}中的數字代表匹配前面字符的個數。

分析完畢。

注:

"\d"代表匹配一個數字字符

"{2,3}"代表匹配2到3位

例:/^((\(\d{2,3}\))|(\d{3}\-))?

"|" 指明兩項之間的一個選擇.要匹配 |,請使用 \|.
"?" 匹配前面的子表達式零次或一次,或指明一個非貪婪限定符.要匹配 ? 字符,請使用 \?. 
匹配開頭爲括號內2-3位數字或3位數字帶中橫線的字符串,此部分只匹配0次或1次,

例如:
(23)
(234)
234-


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章