您的位置:首页 > 其它

再也不为正则表达式愁了,只是调用几个函数的事情

2012-04-09 22:23 489 查看
再也不为正则表达式愁了,只是调用几个函数的事情
//将下面的代码写在一个js中,调用即可。

//是否为空

function isEmpty(str){
var whitespace = " \t\n\r";
var i;
if((str == null) || (str.length == 0))
return true;
for(i = 0; i < str.length; i++){
var c = str.charAt(i);
if(whitespace.indexOf(c) == -1)
return false;
}
return true;
}


//合法Email地址
function isEmail(str){
var isEmail = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
if(isEmail.test(str)){
return true;
}
return false;
}


//固定电话
function isPhone(str){
var isPhone = /^0(((\d{2,3})-(\d){7,8})|(\d{2,3}(\d){7,8}))$/;
if(isPhone.test(str)){
return true;
}
return false;
}


//身份证号
function isIdCard(str){
var isIDCard1 = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
var isIDCard2 = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}[A-Za-z0-9]{1}$/;
if(isIDCard1.test(str)||isIDCard2.test(str)){
return true;
}
return false;
}


//移动电话
function isMobile(str){
var isMobile =  /^(13|15|18|14)\d{9}$/;
if(isMobile.test(str)){
return true;
}
return false;
}


//是否为数字
function isNumber(str){
var isNumber = /\d/;
if(isNumber.test(str)){
return true;
}
return false;
}


//是否为六位数字
function isPostNum(str){
var isPostNum = /\d{6}/;
if(isPostNum.test(str)){
return true;
}
return false;
}


//中文名字
function isName(str){
var isName = /^([A-Za-z\u0391-\uFFE5]){2,20}$/;
if(isName.test(str)){
return true;
}
return false;
}


//两位小数
function isMoney(str){
var isMoney = /^(\d+|[1-9])\.{0,1}\d{0,2}$/;
if(isMoney.test(str)){
return true;
}
return false;
}


//合法昵称
function isStandard(str){
var isStandard = /^([\u4e00-\u9fa5A-Za-z0-9]){1,12}$/;
if(isStandard.test(str)){
return true;
}
return false;
}


//是否为日期
function isBirthday(str){
var isBirthday = /^[1-9][0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/;
if(isBirthday.test(str)){
return true;
}
return false;
}


话题补充://是否为字母
function isCharacter(str){
var isCharacter = /^[a-zA-Z]+$/;
if(isCharacter.test(str)){
return true;
}
return false;
}


// 通过身份证号码找出性别和生日
function showBirthday(val,sex,birthday,error)
{
var check=checkID_ICCID(val)
if(check!='正确') {
if(error.hasChildNodes()){
error.removeChild(error.firstChild);
}
error.appendChild(document.createTextNode(check));
return;
}
else
{
if(error.hasChildNodes()){
error.removeChild(error.firstChild);
}
}
var birthdayValue;
if(15==val.length)
{ //15位身份证号码
birthdayValue = val.charAt(6)+val.charAt(7);
if(parseInt(birthdayValue)<10)
{
birthdayValue = '20'+birthdayValue;
}
else
{
birthdayValue = '19'+birthdayValue;
}
birthdayValue=birthdayValue+'-'+val.charAt(8)+val.charAt(9)+'-'+val.charAt(10)+val.charAt(11);
if(parseInt(val.charAt(14)/2)*2!=val.charAt(14))
sex.value='男';
else
sex.value='女';
birthday.value=birthdayValue;
}
if(18==val.length)
{ //18位身份证号码
birthdayValue=val.charAt(6)+val.charAt(7)+val.charAt(8)+val.charAt(9)+'-'+val.charAt(10)+val.charAt(11)
+'-'+val.charAt(12)+val.charAt(13);
if(parseInt(val.charAt(16)/2)*2!=val.charAt(16)){
sex.value='男';
}
else{
sex.value='女';
}
birthday.value=birthdayValue;
}
}


//验证身份证号格式
function checkID_ICCID(ID_ICCID){
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 ID_ICCID,Y,JYM;
var S,M;
var ID_ICCID_array = new Array();
ID_ICCID_array = ID_ICCID.split("");
//地区检验
if(area[parseInt(ID_ICCID.substr(0,2))]==null) return Errors[4];
//身份号码位数及格式检验
switch(ID_ICCID.length){
case 15:
if ( (parseInt(ID_ICCID.substr(6,2))+1900) % 4 == 0 || ((parseInt(ID_ICCID.substr(6,2))+1900) % 100 == 0 && (parseInt(ID_ICCID.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(ID_ICCID))
return Errors[0];
else
return Errors[2];
break;
case 18:
//18位身份号码检测
//出生日期的合法性检查
//闰年月日:((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]))
//平年月日:((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]))
if ( parseInt(ID_ICCID.substr(6,4)) % 4 == 0 || (parseInt(ID_ICCID.substr(6,4)) % 100 == 0 && parseInt(ID_ICCID.substr(6,4))%4 == 0 )){
ereg=/^[1-9][0-9]{5}(19|20)[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|20)[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(ID_ICCID)){//测试出生日期的合法性
//计算校验位
S = (parseInt(ID_ICCID_array[0]) + parseInt(ID_ICCID_array[10])) * 7

+ (parseInt(ID_ICCID_array[1]) + parseInt(ID_ICCID_array[11])) * 9
+ (parseInt(ID_ICCID_array[2]) + parseInt(ID_ICCID_array[12])) * 10
+ (parseInt(ID_ICCID_array[3]) + parseInt(ID_ICCID_array[13])) * 5
+ (parseInt(ID_ICCID_array[4]) + parseInt(ID_ICCID_array[14])) * 8
+ (parseInt(ID_ICCID_array[5]) + parseInt(ID_ICCID_array[15])) * 4
+ (parseInt(ID_ICCID_array[6]) + parseInt(ID_ICCID_array[16])) * 2
+ parseInt(ID_ICCID_array[7]) * 1
+ parseInt(ID_ICCID_array[8]) * 6
+ parseInt(ID_ICCID_array[9]) * 3 ;
Y = S % 11;
M = "F";
JYM = "10X98765432";
M = JYM.substr(Y,1);//判断校验位

if(M == ID_ICCID_array[17].toUpperCase())
return Errors[0]; //检测ID的校验位
else
{
var a=PersonManage_FamilyDetailInfo.CheckCode(ID_ICCID).value;
if(a==-1)
return Errors[0]; //检测ID的校验位
else
return Errors[3];
}
}
else
return Errors[2];
break;
default:
return Errors[1];
break;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: