正则表达式(Regular Expression)是一个描述字符模式的对象。

使用javascript正则表达式可以进行强大的模式匹配和文本检索与替换功能。

手机号码正则表达式验证

<script type="text/javascript">
// 验证手机号, true - 合法, false - 不合法
function validMobile(mobile){ 
    var mobileReg = /^1[3|4|5|7|8]\d{9}$/;		// 检测 13/14/15/17/18 开头的11位数字
    var mobileReg = /^1[3,4,5,7,8][0-9]{9}$/;		// 检测 13/14/15/17/18 开头的11位数字
    if( mobileReg.test(mobile) ){ 
        return true;
    } 
    return false;
}

// 验证手机号, true - 合法, false - 不合法
function validMobile2(mobile){ 
 	var mobileReg = /^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$/;		
 	if( mobileReg.test(mobile) ){ 
     	return true;
 	} 
 	return false;
}

var mobile = '17896080352';
document.write(mobile + " - validMobile: " + validMobile(mobile) + ", validMobile2: " + validMobile2(mobile) + "<br><br>");

var mobile = '17996080352';
document.write(mobile + " - validMobile: " + validMobile(mobile) + ", validMobile2: " + validMobile2(mobile) + "<br><br>");


// 验证固定电话, true - 合法, false - 不合法
function validTelephonne(telephone){ 
 	var telephoneReg = /^(([0\+]\d{2,3}-)?(0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/;	// 010-60605232-2468, 0271-6541234
 	var telephoneReg = /^0\d{2,3}-?\d{7,8}$/;		
 	if( telephoneReg.test(telephone) ){ 
     	return true;
 	} 
 	return false;
}


// 验证身份证号, true - 合法, false - 不合法
function validCardID(cardId){ 
	var cardIdReg = /^[1-9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$/;				// 15位
	var cardIdReg = /^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{4}$/;		// 18位
	var cardIdReg = (^d{15}$)|(^d{17}([0-9]|X)$);										// 合并后的身份证
	if( cardIdReg.test(telephone) ){ 
   		return true;
	} 
	return false;
}
</script>

 

下面简单的解释一下:

/^1[3|4|5|7|8]\d{9}$/

表示以1开头,第二位可能是3/4/5/7/8等的任意一个,在加上后面的\d表示数字[0-9]的9位,总共加起来11位结束。

 

JS最新手机号码检验

看到网上很多代码都很复杂,还包括以中文开头的0、86、17951,其实谁会填这么多,无非是检验一下他们是否位数对不对,开头有没有写错而已。
手机号码段有移动、联通、电信:

移动

中国移动手机号码开头数字
2G号段(GSM网络)有 134x(0-8)、135、136、137、138、139、150、151、152、158、159、182、183、184
3G号段(TD-SCDMA网络)有 157、187、188
3G上网卡 147
4G号段 178

联通

中国联通手机号码开头数字
2G号段(GSM网络)130、131、132、155、156
3G上网卡  145
3G号段(WCDMA网络)185、186
4G号段 176、185[1]

电信

中国电信手机号码开头数字
2G/3G号段(CDMA2000网络)133、153、180、181、189
4G号段 177

从以上可以看到第一位是【1】开头,第二位则则有【3,4,5,7,8】,第三位则是【0-9】,第三位之后则是数字【0-9】。从而我们可以得出一个符合当前的手机号码验证正则表达式。

猜你可能会喜欢关于JavaScript正则的文章:

  1. JavaScript中的正则表达式总结(大量的正则)
  2. JavaScript正则表达式(例子)

 

固定电话号码正则表达式

//code from http://caibaojian.com/regexp-example.html
 function checkTel(){
 var tel = document.getElementById('tel').value;
if(!/^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/.test(tel)){
alert('固定电话有误,请重填');
return false;
}
}

 

身份证正则:

//身份证正则表达式(15位)
isIDCard1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
//身份证正则表达式(18位)
isIDCard2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;
身份证正则合并:(^\d{15}$)|(^\d{17}([0-9]|X)$)

最新手机号码正则表达式:2016年1月13更新,以下不再使用

var tel = $("#telNo").val(); //获取手机号
var telReg = !!tel.match(/^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$/);
//如果手机号码不能通过验证
if(telReg == false){
 
}

2015-11-20(新增兼容电话和手机正则)

((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)

匹配格式:
11位手机号码
3-4位区号,7-8位直播号码,1-4位分机号
如:12345678901、1234-12345678-1234

使用方式同上:

var telReg = !!tel.match(/^((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)$/);
//如果通过认证
if(telReg){
}

 

其他

提取信息中的网络链接:(h|H)(r|R)(e|E)(f|F) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?
提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
提取信息中的图片链接:(s|S)(r|R)(c|C) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?
提取信息中的IP地址:(\d+)\.(\d+)\.(\d+)\.(\d+)
提取信息中的中国手机号码:(86)*0*13\d{9}
提取信息中的中国固定电话号码:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}
提取信息中的中国电话号码(包括移动和固定电话):(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}
提取信息中的中国邮政编码:[1-9]{1}(\d+){5}
提取信息中的中国身份证号码:\d{18}|\d{15}
提取信息中的整数:\d+
提取信息中的浮点数(即小数):(-?\d*)\.?\d+
提取信息中的任何数字 :(-?\d*)(\.\d+)?
提取信息中的中文字符串:[\u4e00-\u9fa5]*
提取信息中的双字节字符串 (汉字):[^\x00-\xff]*

使用:

test()方法在字符串中查找是否存在指定的正则表达式,并返回布尔值,如果存在则返回true,否则返回false。

var pattern = new RegExp('Box','i');
var str = 'box';
alert(pattern.test(str)); //true
var pattern = /Box/i;
var str = 'box';
alert(pattern.test(str)); //true
var pattern = /Box/i;
var str = 'This is a box';
alert(pattern.test(str)); //true

 

 

参考推荐:

JS 正则表达式验证数字

JS 日期格式与时间戳转换

JS 计算时间差的年月日时分秒

JS 手机号、电话号码正则表达式

JS 去除字符串中的空格

JS javascript:void(0) 真正含义

Javascript 函数参数默认值的设置

js 函数设置默认参数值的3种方法

JS检测移动端自适应屏幕大小

Javascript 常用功能的实现与封装库

PHP 正则表达式

PHP 正则匹配提取网页内容

PHP 正则表达式过滤常用标签

PHP 判断数字,字母,特殊符号,中文

Python 正则匹配re模块

Python学习入门(13)——正则表达式

Python 正则表达式爬取网页分析HTML标签总结

MySQL 正则表达式查询

Linux grep 正则表达式