根据工信部发布的信息目前的手机号的开头:
移动号码包括的号段:134/135/136/137/138/139;
* 147/148(物联卡号);
* 150/151/152/157/158/159;
* 165(虚拟运营商);
* 1703/1705/1706(虚拟运营商)、178;
* 182/183/184/187/188
* 198
* 联通号段包括:130/131
* 145
* 155/156
* 166/167(虚拟运营商)
* 1704/1707/1708/1709、171
* 186/186
*
* 电信号段包括: 133
* 153
* 162(虚拟运营商)
* 1700/1701/1702(虚拟运营商)
* 180/181/189
* 191/199
首先使用JS(JavaScript)时,使用 RegExp 对象来检索文本内容。
定义一个 RegExp 对象
var reg = new RegExp(); //注意()内写正则表达式--例如:var reg = new RegExp(/^\w+$/);
RegExp 对象有RegExp 对象有 3 个方法:test()、exec() 以及 compile()。
test() 方法检索字符串中的指定值。返回值是 true 或 false。
exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。
compile() 方法用于改变 RegExp。
compile() 既可以改变检索模式,也可以添加或删除第二个参数。
具体的用法请参考 :W3school网址详情
手机号的正则表达式确其实网上有很多:
例1:
/^1(3|4|5|6|7|8|9)\d{9}$/
例2:
/^1(3[0-9]|4[5,7]|5[0,1,2,3,5,6,7,8,9]|6[2,5,6,7]|7[0,1,7,8]|8[0-9]|9[1,8,9])\d{8}$/
等等很多方式。
因为手机号这种东西会不断的更新,说不定什么时候“例2”的方式可能就不完全符合要求了。
所以还是建议使用者使用例1这种范围比较宽泛的正则表达式。
当然编程这东西呀,根据开发的要求不同,严谨性和实用性不能一概而定,所以使用哪种方式都可以。
我使用的是比较宽泛的正则。
下面贴出我自己的代码,仅供参考。
<input type="text" onblur="focalJudgment3()" id="reg_mobile" name="mobile" data-msg-required="请填写手机号码." placeholder="手机号码" />
<span id="mobileSp"></span>
<script type="text/javascript">
function focalJudgment3() {
var str = document.getElementById("reg_mobile");
if(str.value.length!=0){
var reg =new RegExp(/^[1]([3-9])[0-9]{9}$/);//{9}表示[3-9]后面跟着9个[0-9]的数字。直接写死手机号的长度。
if (!reg.test(str.value)){
//不符合要求的提示字颜色--红色
document.getElementById("mobileSp").style.color="red";
document.getElementById("mobileSp").innerHTML="*手机号格式不正确!";
//强制获取焦点
$("#reg_mobile").focus();//不符合要求,手机号文本框强制获取焦点。
}else{
//符合要求的提示字颜色--绿色
document.getElementById("mobileSp").style.color="green";
document.getElementById("mobileSp").innerHTML="*符合要求";
//释放焦点
document.getElementById("reg_mobile").blur();//符合要求释放焦点。
}
}else{
//判断手机号是否为空。因为填写过不符合要求的手机号,手机号文本框会一直获得焦点,
无法跳过手机号填写,再去填写其他的信息。
所以先加一个文本框内容的长度判断,如果内容长度为零,则提示用户手机号为空,
然后释放文本框焦点,现在就可以先填其他信息。
document.getElementById("mobileSp").style.color="red";
document.getElementById("mobileSp").innerHTML="*手机号为空!";
//释放焦点
document.getElementById("reg_mobile").blur();//符合要求释放焦点。
}
}
</script>
亲测可用。
因为我也是刚开始学习正则,所以写的有些简单,之后功力高深了再进行补充吧。