199,一個被正則表達式遺忘的號碼段?


前不久換手機號,東想西想,最后選了個電信的199號碼段。這下好了,當我注冊某些網站的賬號時,彈出個非法號碼字段,驚了!怎么回事???

於是想到:當我們注冊某網站的時候,需要輸入手機號進行注冊。比如唯品會的注冊界面,當你輸入的手機號不對時就會出現錯誤提示:請輸入正確的手機號碼

 

這個是怎么實現的呢?比如我那個199開頭的電信號,總是被誤認為非法號碼。究其原因,原來是正則表達式搞的鬼。

首先了解一下什么是正則表達式?打開百度百科,它的解釋如下:

所以,在程序設計上,正則表達式通常用於匹配字符串,一般是匹配有規律的字符串,多數用於表單驗證。比如注冊網站時,我們常常需要按要求填寫的那些賬號密碼信息等。

正則表達式怎么寫出來的,首先讓我們看看正則表達式是什么樣子的?

幾個常見的正則表達式
功能實現 正則表達式
Email地址 ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
域名 [a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
身份證號 ^\d{15}|\d{18}$
帳號是否合法 ^[a-zA-Z][a-zA-Z0-9_]{5,15}$

坐好了,准備發車!接下來看看正則表達式是怎么寫的?這些字符代表什么意思?以及手機號的正則表達式是怎樣的?

正則表達式-特殊字符
. 表示除了換行之外的所有單個字符 \w 表示匹配數字,字母,下划線[A-Z0-9a-z _]
* 表示匹配任意多次可以是0,一般結合其它字符使用 \W 表示匹配非數字,非字母,非下划線[^A-Z0-9a- z_]
[] 表示范圍 \d 表示數字[0-9]
^ 表示非 \D 表示非數字[^0-9]
+ 表示至少出現一次 {n,} 至少匹配n次,{n}:表示匹配n次,{n,m}:表示最少n次,最多m次
正則表達式-錨元字符
/^ 從頭匹配
$/ 從尾部匹配
\b 匹配邊界
\s 匹配空格
正則表達式-選擇字符
| 或者的意思
() 表示分組

那么常用的手機號的正則表達式是怎樣的?

首先得了解一下三大運營商的各號碼段如何:

於是滿足所有條件的手機號碼的正則表達式誕生了:

/^1([358][0-9]|4[579]|66|7[0135678]|9[89])\d{8}$/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM