这是jsp页面调用下面的js代码的一段脚本(整理收集的资料)
<script type="text/javascript">
function verfiy(){
var cercard=document.forms[0].cerCard.value;
if(!checkId(cercard)){
document.forms[0].cerCard.focus();
return false;
}else{
document.forms[0].cerCard.value = convertID(cercard);
}
}
</script>
js脚本文件
/*
*判别电话号码,手机号是否有效
*返回 true:false
*/
function checkPhone(phone)
{
//验证电话号码手机号码,包含153,159号段
if (phone==""){
alert("电话号码不能为空!");
return false;
}
if (phone != ""){
var p1 = /^(([0/+]/d{2,3}-)?(0/d{2,3})-)?(/d{7,8})(-(/d{3,}))?$/;
var me = false;
if (p1.test(phone)) me=true;
if (!me){
//alert('对不起,您输入的电话号码有错误。区号和电话号码之间请用-分割');
return false;
}
}
return true;
}
function checkMobile(mobile)
{
if (mobile != ""){
var reg0 = /^13/d{5,9}$/;
var reg1 = /^153/d{4,8}$/;
var reg2 = /^159/d{4,8}$/;
var reg3 = /^0/d{10,11}$/;
var reg4 = /^150/d{4,8}$/;
var reg5 = /^158/d{4,8}$/;
var reg6 = /^15/d{5,9}$/;
var my = false;
if (reg0.test(mobile))my=true;
if (reg1.test(mobile))my=true;
if (reg2.test(mobile))my=true;
if (reg3.test(mobile))my=true;
if (reg4.test(mobile))my=true;
if (reg5.test(mobile))my=true;
if (reg6.test(mobile))my=true;
if (!my){
//alert('对不起,您输入的手机或小灵通号码有错误。');
return false;
}
return true;
}
}
function checkPhoneAndMobile(phone)
{
if (checkMobile(phone)||checkPhone(phone)){
return true;
}
return false;
}
/*
*判别身份证号码是否合法,入口参数为身份证号码
*返回 true:false
*Junsan Jin 20050902
*/
function checkId(varInput){
if(varInput==null || varInput.trim()==""){
alert("身份证号不能为空,请重新输入!");
return false;
}
varInput = varInput.trim();
if(varInput.length!=18 && varInput.length!=15){
alert("身份证号位数不对,请重新输入!");
return false;
}
var ret = convertID(varInput);
// alert(ret);
if(ret == false){
alert("身份证号不正确,请重新输入!");
return false;
}
else if(varInput.length==18 && varInput!=ret){
alert("身份证号不正确,请重新输入!");
return false;
}
else{
//返回值可以自动升级18位身份证号
//return ret;
// alert("正确");
return true;
}
}
/*
*15身份证号码升18位,入口参数0为15身份证号码,返回值为18位身份证号码
*如果证号错误则返回false
*Junsan Jin 20050902
*/
function convertID(varInput){
if(varInput==null || varInput.trim()==""){
return false;
}
var strOldID = new String(varInput.trim());
var strNewID = "";
if(strOldID.length==15){
for(i=0; i<15; i++){
//15位的身份证号必须全部由数字组成,否则,视为非法
if(checkZInt(strOldID.substring(i,1))){
return false;
}
}
//取得身份证中的年月日
var year = "19" + strOldID.substr(6,2);
// alert(year);
var month = strOldID.substr(8,2);
// alert(month);
var day = strOldID.substr(10,2);
// alert(day);
//校验日期是否正确
if(checkDate(year,month,day)){
return false;
}
strNewID = strOldID.substring(0,6) + "19" + strOldID.substring(6,15);
}
else if(strOldID.length==18){
for(i=0; i<17; i++){
//15位的身份证号必须全部由数字组成,否则,视为非法
if(checkZInt(strOldID.substring(i,1))){
return false;
}
}
if(strOldID.substring(17,18).toUpperCase!="X" && checkZInt(strOldID.substring(17,18))){
return false;
}
//取得身份证中的年月日
var year = "19" + strOldID.substr(6,4);
var month = strOldID.substr(10,2);
var day = strOldID.substr(12,2);
//校验日期是否正确
if(checkDate(year,month,day)){
return false;
}
strNewID = strOldID.substring(0,17);
}
else if(strOldID.length==17){
for(i=0; i<17; i++){
//15位的身份证号必须全部由数字组成,否则,视为非法
if(checkZInt(strOldID.substring(i,1))){
return false;
}
}
//取得身份证中的年月日
var year = "19" + strOldID.substr(6,4);
var month = strOldID.substr(10,2);
var day = strOldID.substr(12,2);
//校验日期是否正确
if(checkDate(year,month,day)){
return false;
}
strNewID = strOldID;
}
return strNewID = strNewID + createCK(strNewID);
}
/*
*根据17位的身份证号得到最后一位校验码
*strID:身份证号前17位
*只返回
*/
function createCK(strID){
var s = 0;
var WI = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
var AI = "10X98765432";
for(i=0; i<17; i++){
j = strID.substr(i,1) * WI[i];
s = s + j;
}
s = s % 11;
return AI.substr(s,1);
}
/*
*主要提供对日期的精确校验,验证日期是否合法
*非法返回true,合法返回false
*Junsan Jin 20050902
*参数说明:
*year:年
*month:月
*day:日
*/
function checkDate(year,month,day){
var flag=false;
var time=new Date(year,month-1,day);
// alert(time);
var e_year=time.getFullYear();
// alert(e_year);
var e_month=time.getMonth()+1;
// alert(e_month);
var e_day=time.getDate();
// alert(e_day);
if(year!=e_year||month!=e_month||day!=e_day)
{
flag=true;
}
return flag;
}
/*
*检查输入的串是否在0到9之间的字符组成
*不是则返回true,如果是则返回false
*Junsan Jin 20050902
*/
function checkZInt(str){
var reg = /^/d+$/;
if(arr=str.match(reg))
{
//全部是数字
return false;
}
else
{
//含有其他字符
return false;
}
}
/*
*字符串去掉左右空格的方法
*Junsan Jin 20050902
*/
String.prototype.trim = function(){
return this.replace(/(^/s*)|(/s*$)/g, "");
}
/*
*字符串去掉左空格的方法
*Junsan Jin 20050902
*/
String.prototype.ltrim = function(){
return this.replace(/(^/s*)/g, "");
}
/*
*字符串去掉右空格的方法
*Junsan Jin 20050902
*/
String.prototype.rtrim = function(){
return this.replace(/(/s*$)/g, "");
}