javascript 出生日期和身份證判斷大全
更新時(shí)間:2008年11月13日 20:16:39 作者:
對(duì)于身份證和出生年月的判斷都包括了,非常全。出生日期不能為空,如果出生日期不為空,出生日期必須是8位;如果身份證號(hào)是18位或15位必須和出生日期相匹配;如果是軍官證號(hào)必須首字符是漢字!
if(document.form1.csrq.value==""){
alert("請(qǐng)?zhí)顚?xiě)出生日期!");
document.form1.csrq.focus();
return false;
}
if(document.form1.csrq.value==""){
alert("請(qǐng)?zhí)顚?xiě)出生日期!");
document.form1.csrq.focus();
return false;
}else{
if(document.form1.csrq.value.length!=8){
alert("出生日期必須為8位!");
document.form1.csrq.focus();
return false;
}
if(document.form1.sfzh.value.length==18){
var sfzh =document.form1.sfzh.value;
if(document.form1.csrq.value!=sfzh.substring(6,14)){
alert("出生日期與身份證號(hào)不一致!");
document.form1.csrq.focus();
return false;
}
}
if(document.form1.sfzh.value.length==15){
var sfzh =document.form1.sfzh.value;
if(document.form1.csrq.value!='19'+sfzh.substring(6,12)){
alert("出生日期與身份證號(hào)不一致!");
document.form1.csrq.focus();
return false;
}
}
}
if(!isIdCardNo(document.form1.sfzh.value)){
document.form1.sfzh.focus();
return false;
}
function isNN(num){
var badChar ="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //大寫(xiě)字母
badChar += "abcdefghijklmnopqrstuvwxyz"; //小寫(xiě)字母
badChar += "0123456789"; //數(shù)字
badChar += " "+" ";//半角與全角空格
badChar += "`~!@#$%^&()-_=+]\\|:;\"\\'<,>?/";//特殊符號(hào)
var c;
//for(var i=0;i<name.length;i++){//依次判斷name中的字符
c=num.charAt(0);//取出num中的第1個(gè)字符
if(badChar.indexOf(c) != -1){ //如果當(dāng)前字符在badChar中找到了匹配字符,說(shuō)明它不是漢字
return false;
} else{
return true;
}
}
function isIdCardNo(num)
{
// if (isNaN(num)) {alert("輸入的不是數(shù)字!"); return false;}
var len = num.length, re;
if (len == 15){
re = new RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/);
}else if (len == 18){
re = new RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d)$/);
}else if (isNN(num)){
return true;
}else {
alert("如果是軍官號(hào)請(qǐng)輸入完整,例如:某軍官證號(hào)為政字第123456號(hào);如果是身份證號(hào)請(qǐng)檢測(cè)您輸入的位數(shù),必須為15位或18位。");
return false;
}
var a = num.match(re);
if (a != null)
{
if (len==15)
{
var D = new Date("19"+a[3]+"/"+a[4]+"/"+a[5]);
var B = D.getYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5];
}
if (len == 18)
{
var D = new Date(a[3]+"/"+a[4]+"/"+a[5]);
var B = D.getFullYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5];
}
if (!B) {alert("輸入的身份證號(hào) "+ a[0] +" 里出生日期不對(duì)!"); return false;}
}
return true;
}
alert("請(qǐng)?zhí)顚?xiě)出生日期!");
document.form1.csrq.focus();
return false;
}
if(document.form1.csrq.value==""){
alert("請(qǐng)?zhí)顚?xiě)出生日期!");
document.form1.csrq.focus();
return false;
}else{
if(document.form1.csrq.value.length!=8){
alert("出生日期必須為8位!");
document.form1.csrq.focus();
return false;
}
if(document.form1.sfzh.value.length==18){
var sfzh =document.form1.sfzh.value;
if(document.form1.csrq.value!=sfzh.substring(6,14)){
alert("出生日期與身份證號(hào)不一致!");
document.form1.csrq.focus();
return false;
}
}
if(document.form1.sfzh.value.length==15){
var sfzh =document.form1.sfzh.value;
if(document.form1.csrq.value!='19'+sfzh.substring(6,12)){
alert("出生日期與身份證號(hào)不一致!");
document.form1.csrq.focus();
return false;
}
}
}
if(!isIdCardNo(document.form1.sfzh.value)){
document.form1.sfzh.focus();
return false;
}
function isNN(num){
var badChar ="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //大寫(xiě)字母
badChar += "abcdefghijklmnopqrstuvwxyz"; //小寫(xiě)字母
badChar += "0123456789"; //數(shù)字
badChar += " "+" ";//半角與全角空格
badChar += "`~!@#$%^&()-_=+]\\|:;\"\\'<,>?/";//特殊符號(hào)
var c;
//for(var i=0;i<name.length;i++){//依次判斷name中的字符
c=num.charAt(0);//取出num中的第1個(gè)字符
if(badChar.indexOf(c) != -1){ //如果當(dāng)前字符在badChar中找到了匹配字符,說(shuō)明它不是漢字
return false;
} else{
return true;
}
}
function isIdCardNo(num)
{
// if (isNaN(num)) {alert("輸入的不是數(shù)字!"); return false;}
var len = num.length, re;
if (len == 15){
re = new RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/);
}else if (len == 18){
re = new RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d)$/);
}else if (isNN(num)){
return true;
}else {
alert("如果是軍官號(hào)請(qǐng)輸入完整,例如:某軍官證號(hào)為政字第123456號(hào);如果是身份證號(hào)請(qǐng)檢測(cè)您輸入的位數(shù),必須為15位或18位。");
return false;
}
var a = num.match(re);
if (a != null)
{
if (len==15)
{
var D = new Date("19"+a[3]+"/"+a[4]+"/"+a[5]);
var B = D.getYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5];
}
if (len == 18)
{
var D = new Date(a[3]+"/"+a[4]+"/"+a[5]);
var B = D.getFullYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5];
}
if (!B) {alert("輸入的身份證號(hào) "+ a[0] +" 里出生日期不對(duì)!"); return false;}
}
return true;
}
相關(guān)文章
JavaScript Date對(duì)象 日期獲取函數(shù)
JavaScript Date對(duì)象 日期獲取函數(shù)必備,需要使用js得到當(dāng)前日期的朋友可以參考下。2010-12-12js 模仿網(wǎng)上的限時(shí)搶購(gòu)效果
顯示類似還剩 14小時(shí)52分15秒這樣的效果,顯示活動(dòng)剩余多長(zhǎng)時(shí)間就結(jié)束。2010-07-07JavaScript 逼真圖片倒計(jì)時(shí)實(shí)現(xiàn)代碼
一般的倒計(jì)時(shí)代碼都是文字版本的,這個(gè)是圖片格式的,更漂亮的,圖片大家可以自己做。主要是參考實(shí)現(xiàn)方法。2010-09-09日期處理的js庫(kù)(迷你版)--自建js庫(kù)總結(jié)
先推薦網(wǎng)上不錯(cuò)的日期js庫(kù):http://momentjs.com/ 其實(shí)這類資源網(wǎng)絡(luò)上一抓一把,但是想要針對(duì)項(xiàng)目實(shí)用的還是不多,因?yàn)槲医佑|的那類都經(jīng)常在日期而非深入到hour、minute、second!所以想干脆自己編個(gè)小庫(kù)吧,這樣以后寫(xiě)代買將省力很多,在這里分享下,希望對(duì)大家有用2011-11-11javascript 日歷提醒系統(tǒng)( 兼容所有瀏覽器 )
日歷提醒插件(純 javascript + css 打造,不含各類添加劑) 代碼比較精簡(jiǎn),數(shù)據(jù)可以從數(shù)據(jù)庫(kù)中讀取。2009-04-04自己整理的一個(gè)javascript日期處理函數(shù)
日期函數(shù),沒(méi)必要多說(shuō)了吧?就是一般的日期比較,日期相加,獲取當(dāng)前time2010-10-10Javascript倒計(jì)時(shí)頁(yè)面跳轉(zhuǎn)實(shí)例小結(jié)
在js中實(shí)現(xiàn)頁(yè)面定時(shí)跳轉(zhuǎn)我們要使用setInterval或setTimeOut函數(shù),當(dāng)然還可以使用頁(yè)面的meta實(shí)現(xiàn)了,下面使用js實(shí)現(xiàn)的幾個(gè)代碼2013-09-09