一、11位手機號正則表達式中的數字和格式
手機號目前採用11位數字作為唯一標識,其中第一位數字為1。如果希望匹配國內所有手機號,可以使用如下代碼:
/^1[3|4|5|6|7|8|9][0-9]{9}$/
其中^和$分別代表字符串的開始和結尾,中間包含一段由”1″開頭,第二位為3~9之間任意數字,後面加上9位數字的組合,用於匹配所有符合規則的手機號。如下示例代碼將會判斷手機號是否符合規則:
<input type="text" id="test" onchange="checkPhoneNumber()"> <script type="text/javascript"> function checkPhoneNumber(){ var pattern = /^1[3|4|5|6|7|8|9][0-9]{9}$/; var phoneNumber = document.getElementById("test").value; if (pattern.test(phoneNumber)) { alert("手機號格式正確!"); } else { alert("手機號格式錯誤!"); } } </script>
這段代碼會觸發一個onchange事件,當用戶輸入內容改變時,檢查輸入的手機號是否符合規則並給出相應提示。
二、手機號正則表達式中的擴展匹配規則
除上述規則外,有時候還需要匹配一些特定的手機號碼格式,如座機號碼、大陸或港澳台的手機號碼格式。下面給出一些擴展的正則表達式規則:
1、匹配座機號碼
座機號碼在國內是有一定格式規定的,格式大致如下:
XXXX-XXXXXXX XXXX-XXXXXXXX XXXXXXX XXXXXXXX
其中”X”表示數字。下面的代碼可以匹配以上座機號碼格式:
/^0\d{2,3}-\d{7,8}$|^1[3|4|5|6|7|8|9][0-9]{9}$/
其中”|”表示「或者」的意思。在這裡的正則表達式規則中,表示如果數字格式不是XXX-XXXXXXX或XXX-XXXXXXXX或XXXXXXX或XXXXXXXX,那麼就檢查是否是符合手機號規則的11位數字碼。
2、匹配大陸、港澳台以及其他手機號
在國內,大陸、港澳台以及其他地區的手機號碼格式可能不同。下面給出一些參考的正則表達式代碼:
大陸手機:
/^1[3|4|5|6|7|8|9][0-9]{9}$/
港澳台手機:
/^(00852)?[569]\d{7}$/ /*香港*/ /^(00853)?6\d{7}$/ /*澳門*/ /^(00886)?09\d{8}$/ /*台灣大陸機*/ /^(00886)?\d{10}$/ /*台灣*/
其他地區手機:
/^[1-9]\d{4,10}$/ /*海外手機*/
使用示例:
<input type="text" id="test" onchange="checkPhoneNumber()"> <script type="text/javascript"> function checkPhoneNumber(){ var pattern = /^0\d{2,3}-\d{7,8}$|^1[3|4|5|6|7|8|9][0-9]{9}$|^(00852)?[569]\d{7}$|^(00853)?6\d{7}$|^(00886)?09\d{8}$|^(00886)?\d{10}$|^[1-9]\d{4,10}$/; var phoneNumber = document.getElementById("test").value; if (pattern.test(phoneNumber)) { alert("手機號格式正確!"); } else { alert("手機號格式錯誤!"); } } </script>
三、常見手機號前綴的正則表達式匹配
值得注意的是,目前大多數手機號前綴已被運營商認領,如移動的號碼都是以134、135、136、137、138、139、150、151、152、157、158、159、182、183、184、187、188、198開頭的。因此,我們也可以根據目前常見的手機號前綴制定正則表達式匹配規則。
例如,我們可以編寫代碼用來匹配移動、聯通、電信等主流運營商的手機號碼:
var cmccReg = /^1(3[4-9]|4[7]|5[0-27-9]|7[8]|8[2-478])\d{8}$/; var cuccReg = /^1(3[0-2]|4[5]|5[5-6]|6[6]|7[5-7]|8[56])\d{8}$/; var ctccReg = /^1(3[3]|4[9]|5[3]|7[0]|8[0-1]|8[9]|9[0-9])\d{8}$/;
其中,cmccReg用來匹配中國移動的號碼,cuccReg用來匹配中國聯通的號碼,ctccReg用來匹配中國電信的號碼。如果希望匹配允許的所有手機號碼,可以將以上三個正則表達式用”|”拼接在一起,例如:
var phoneReg = /^(1(3[4-9]|4[7]|5[0-27-9]|7[8]|8[2-478])|1(3[0-2]|4[5]|5[5-6]|6[6]|7[5-7]|8[56])|1(3[3]|4[9]|5[3]|7[0]|8[0-1]|8[9]|9[0-9]))\d{8}$/;
以上代碼給出了中國移動、中國聯通和中國電信的號碼匹配規則,如果將它們用「|」連成一起,就可以匹配國內主流運營商提供的所有手機號碼。
四、手機號前綴匹配規則的應用
可以在實際開發應用中使用以上給出的正則表達式,例如:
<input type="text" id="test" onchange="checkPhoneNumber()"> <script type="text/javascript"> function checkPhoneNumber(){ var phoneReg = /^(1(3[4-9]|4[7]|5[0-27-9]|7[8]|8[2-478])|1(3[0-2]|4[5]|5[5-6]|6[6]|7[5-7]|8[56])|1(3[3]|4[9]|5[3]|7[0]|8[0-1]|8[9]|9[0-9]))\d{8}$/; var phoneNumber = document.getElementById("test").value; if (phoneReg.test(phoneNumber)) { alert("手機號格式正確!"); } else { alert("手機號格式錯誤!"); } } </script>
在這個示例中,使用了以上規則來匹配國內的主流運營商提供的所有手機號,自動檢測輸入的手機號碼是否符合要求。
總結
本文從常用的手機號匹配規則入手,給出了多種正則表達式代碼,包括11位手機號正則表達式、座機號碼匹配規則、大陸、港澳台、海外手機和各主流運營商的手機號碼匹配規則,旨在幫助開發人員更好地完成驗證手機號碼的功能。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/246525.html