技术CTO-关注编程入门知识,提供编程入门教程

您的位置: 首页 > 网络编程 > java开发 > 正文

js判断身份证格式是否正确的函数无效

来源: 技术CTO 阅读:


 function doChange(srcObj){
if(srcObj.name=="id_num"){
   var tegx="/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/";
var result1=srcObj.value.match(tegx);
   if(result1==null){
alert("证件号格式不对1!"+srcObj.value);
document.form1.id_num.value="";

}

   }
   }


<input type="text" name="id_num" id="id_num"  onchange="doChange(this)" />
不论我写什么,都提示身份证格式不对,有木有人知道为什么,帮我解决一下!
"^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$"
document.write(/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test("765433198187654543"));  //满足
document.write(/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test("765433198187654543q"));//不满足
var result1=srcObj.value.match(tegx);
改成
var result1=tegx.test(srcObj.value);
引用 3 楼 rui888 的回复:
document.write(/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test("765433198187654543"));  //满足
document.write(/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test("765433198187654543q"));//不满足

这个可以,谢谢你,那你知道为什么我写的那个不行吗?
引用 4 楼 suciver 的回复:
var result1=srcObj.value.match(tegx);
改成
var result1=tegx.test(srcObj.value);

恩,我改了,可以了,但是我不明白为什么match()方法不行,之前写的判断中文的用test()方法就不行,match()就可以,它俩到底有啥区别,什么情况下用哪个方法?
引用 6 楼 u010261022 的回复:
Quote: 引用 4 楼 suciver 的回复:

var result1=srcObj.value.match(tegx);
改成
var result1=tegx.test(srcObj.value);

恩,我改了,可以了,但是我不明白为什么match()方法不行,之前写的判断中文的用test()方法就不行,match()就可以,它俩到底有啥区别,什么情况下用哪个方法?

js中test才是校验返回的是boolean类型,match则是正则查找,即查找匹配的字串并返回
引用 7 楼 suciver 的回复:
Quote: 引用 6 楼 u010261022 的回复:

Quote: 引用 4 楼 suciver 的回复:

var result1=srcObj.value.match(tegx);
改成
var result1=tegx.test(srcObj.value);

恩,我改了,可以了,但是我不明白为什么match()方法不行,之前写的判断中文的用test()方法就不行,match()就可以,它俩到底有啥区别,什么情况下用哪个方法?

js中test才是校验返回的是boolean类型,match则是正则查找,即查找匹配的字串并返回

这个我知道,那为什么match方法没有找到匹配的字符串?
表示还没用过正则,看不懂……

^_^ 如果您热爱技术、热爱编程,想与更多的朋友一起交流学习,欢迎加入本站官方QQ群:345733473 ^_^