JS手机号正则表达式,获取和释放焦点

2 篇文章 0 订阅
1 篇文章 0 订阅

根据工信部发布的信息目前的手机号的开头:

移动号码包括的号段: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>

亲测可用。
因为我也是刚开始学习正则,所以写的有些简单,之后功力高深了再进行补充吧。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值