開發過程中出現手機號驗證不對的問題,找到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-