判断输入的身份证号码是否合法。代码主要思路是先判断输入的内容长度是否为18位,然后再判断前17位是否都为数字,18位是否为数字或者X。(先不考虑身份证的各种构成要素)
html>
<html>
<head>
<meta charset="utf-8" />
<title>title>
head>
<script language="JavaScript" type="text/javascript">
var a = document.getElementById("identity").value;
String a;
var b = document.getElementById("result");
// var array1= new Array(0,1,2,3,4,5,6,7,8,9);
// var array2= new Array(1,2);
// var array3= new Array(0,1);
// var array4= new Array(0,1,2,3);
function checklegal(){
if(a.length!=18){
b.innerHTML="您输入的身份证号码不合法!";
}else{
for(int i=0;i<=17;i++){
var c = a.charAt(i);
ascc=c.charCodeAt();
while(i<=16){
if(ascc<=57 && ascc>=48){
b.innerHTML="您输入的身份证号码合格!";
}else{
b.innerHTML="您输入的身份证号码不合法!";
}
}
while(i==17){
if(ascc<=57 && ascc>=48 || ascc==88){
b.innerHTML="您输入的身份证号码合格!";
}else{
b.innerHTML="您输入的身份证号码不合法!";
}
}
}
}
}
script>
<body>
<div>
<p>
请输入您的身份证号码:
p>
<form action="index.html" method="get" onsubmit="return checklegal()">
<input type="text" id="identity"/>
<button type="button" onsubmit="return checklegal()">确认button>
<span id="result">span>
form>
div>
body>
html>
输入的内容传递不到js中
应该是值取错了,但检查了一下好像也没什么问题
可以对输入的内容进行判断,是否符合代码中所表示的要求
可以用正则表达式
/^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}[\dXx]$/
正则
你写个while(i<=16)不是标准死循环吗
改成if
可以使用正则表达式进行验证
/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
一个正则,所有问题迎刃而解