最近在使用 jQuery.validator 验证插件,其中有地方需要用到手机号码验证的功能。
使用 JavaScript 正则表达式可以进行强大的模式匹配和文本检索与替换功能,下面整理了一下手机和电话号码的正则表达式。
手机号码正则表达式验证:
代码语言:javascript复制function checkPhone(){
var phone = document.getElementById('phone').value;
if(!(/^1[3456789]d{9}$/.test(phone))){
alert("手机号码有误,请重填");
return false;
}
}
或者:
代码语言:javascript复制function checkPhone(){
var phone = document.getElementById('phone').value;
if(!(/^1(3|4|5|6|7|8|9)d{9}$/.test(phone))){
alert("手机号码有误,请重填");
return false;
}
}
小括号就是括号内看成一个整体,中括号就是匹配括号内的其中一个。
正则里面的中括号 []
只能匹配其中一个,如果要匹配特定几组字符串的话,那就必须使用小括号 ()
加“或” |
,中括号中 |
也是一个字符,并不代表或。[3457]
匹配 3 或者 4 或者 5 或者 7 ,而 (3457)
只匹配 3457,若要跟前面一样可以加“或”符号 (3|4|5|7)
。[34|57]
匹配 3 或者 4 或者 | 或者 5 或者 7 ,而 (34|57)
能匹配 34 或者 57 。
下面简单的解释一下:
代码语言:javascript复制^1(3|4|5|7|8)d{9}$
表示以1开头,第二位可能是 3/4/5/7/8 等的任意一个,在加上后面的 d{9}
表示数字 [0-9] 的 9 位,总共加起来11位结束。
JavaScript中的正则表达式总结(大量的正则)
JavaScript正则表达式(例子)
固定电话号码正则表达式:
代码语言:javascript复制function checkTel(){
var tel = document.getElementById('tel').value;
if(!/^((d{3,4})|d{3,4}-|s)?d{7,14}$/.test(tel)){
alert('固定电话有误,请重填');
return false;
}
}
身份证正则:
代码语言:javascript复制//身份证正则表达式(15位)
isIDCard1=/^[1-9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$/;
//身份证正则表达式(18位)
isIDCard2=/^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{4}$/;
身份证正则合并:(^d{15}$)|(^d{17}([0-9]|X)$)
其他:
提取信息中的网络链接:(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 )
提取信息中的中国电话号码(包括移动和固定电话):((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