求身份证正则

灬上海爽爷 2009-11-02 04:54:27
15位或者18位
15位,7-12位为日期850101这样
18位,7-14位为日期,最后一位数字或X
求个可用的正则。最好就一句话把。
...全文
1183 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
灬上海爽爷 2009-11-03
  • 打赏
  • 举报
回复
恩。4楼已经接近了。不过还差了些。。至少年份不能验证0230这种不能验证。。
xdspower 2009-11-03
  • 打赏
  • 举报
回复
完全用正则其实没有必要,还可以辅助用其他判断来过滤日期不合适的部分。
道光2008 2009-11-03
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 only_niu 的回复:]
JScript code<script language="javascript" src="js/jquery-1.3.2.min.js"></script><script>function NationalId_guonei(national_id){var idcardx= document.getElementById(national_id);var idcard= idcardx.va¡­
[/Quote]
可以
only_niu 2009-11-03
  • 打赏
  • 举报
回复

<script language="javascript" src="js/jquery-1.3.2.min.js"></script>
<script>
function NationalId_guonei(national_id){
var idcardx = document.getElementById(national_id);
var idcard = idcardx.value;
var Errors=new Array(
"身份证号码位数不对!",
"身份证号码出生日期超出范围或含有非法字符!",
"身份证号码校验错误!",
"身份证为空或地区非法!"
);
var area={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}
var Y,JYM;
var S,M;
var idcard_array = new Array();
idcard_array = idcard.split("");
//地区检验
if(area[parseInt(idcard.substr(0,2))]==null){
alert(Errors[3]);
idcardx.focus();
idcardx.style.borderColor='#FF0000';
return false;
}
//身份号码位数及格式检验
switch(idcard.length){
case 15:
if ( (parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){
ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;
}
else {
ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;
}
if(ereg.test(idcard)){
return true;
}
else{
alert(Errors[1]);
idcardx.focus();
idcardx.style.borderColor='#FF0000';
return false;
}
return false;
case 18:
if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){
ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;
}
else {
ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;
}
if(ereg.test(idcard)){
S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7
+ (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9
+ (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10
+ (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5
+ (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8
+ (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4
+ (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2
+ parseInt(idcard_array[7]) * 1
+ parseInt(idcard_array[8]) * 6
+ parseInt(idcard_array[9]) * 3 ;
Y = S % 11;
M = "F";
JYM = "10X98765432";
M = JYM.substr(Y,1);//判断校验位
if(M != idcard_array[17]){
alert(Errors[2]);
idcardx.focus();
idcardx.style.borderColor='#FF0000';
return false;
}
return true;
}
else {
alert(Errors[1]);
idcardx.focus();
idcardx.style.borderColor='#FF0000';
return false;
}
default:
alert(Errors[0]);
idcardx.focus();
idcardx.style.borderColor='#FF0000';
return false;
}
}
</script>
灬上海爽爷 2009-11-03
  • 打赏
  • 举报
回复
人工置顶。
xiangchengboy 2009-11-02
  • 打赏
  • 举报
回复
function isvalidide(inputs) //校验身份证 
{
var i,temp;
var isvalidide = true;
inputstr=trim(inputs);
if(inputstr.length == null || inputstr.length == 0 || (inputstr.length != 15 && inputstr.length != 18)) return false;
for(i=0;i<inputstr.length;i++)
{
temp=inputstr.substring(i,i+1);

if(!((temp>="0" && temp<="9") || temp == "x" || temp == "X"))
{
isvalidide=false;
break;
}
}
return isvalidide;
}


sundotLei 2009-11-02
  • 打赏
  • 举报
回复
Try.....

<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<script type="text/javascript">
function check(){
var v=document.getElementById("s").value;
var card15=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
var card18=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|[X,x])$/;
if(!card15.test(v) && !card18.test(v)){
alert('请输入合法的身份证号码!');
return false;
}

}

</script>
</HEAD>

<BODY>
<input type="text" id="s"/>
<input type="button" onclick="check()" value="submit"/>
</BODY>
</HTML>
灬上海爽爷 2009-11-02
  • 打赏
  • 举报
回复
你会BAIDU的我也会。。这个明显不能验证日期的。
sundotLei 2009-11-02
  • 打赏
  • 举报
回复
if(!/(^\d{15}$)|(^\d{17}([0-9]|[X,x])$)/.test(身份证号码)){
alert('请输入合法身份证');
return false;
}
灬上海爽爷 2009-11-02
  • 打赏
  • 举报
回复
人工置顶,没人知道么,/.../这样的格式最好。

87,903

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧