js验证手机号码、电话号码、身份证号码正则表达式
手机号码正则表达式验证
function checkPhone(){
var phone = document.getElementById('phone').value;
if(!(/^1[34578]\d{9}$/.test(phone))){
alert("手机号码有误,请重填");
return false;
}
}
或者
function checkPhone(){
var phone = document.getElementById('phone').value;
if(!(/^1(3|4|5|7|8)\d{9}$/.test(phone))){
alert("手机号码有误,请重填");
return false;
}
}
或者
function checkPhone(){
var phone = document.getElementById('phone').value;
if(!(/^1(3,4,5,7,8)\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。
下面简单的解释一下:
^1(3|4|5|7|8)\d{9}$
表示以1开头,第二位可能是3/4/5/7/8等的任意一个,在加上后面的\d表示数字[0-9]的9位,总共加起来11位结束。
本来只容13,15,17,18,开头的手机号,但是据说有14开头的号码,所以添加了14;当然,如果以后要是发展成有16,或者19,之类的开头号码的话,在添加到正则表达式中即可
固定电话号码正则表达式
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)$)