`

自己写的验证类【正则表达式】

阅读更多
自己写的验证类,希望大家批评
下面的代码在我上传的包里有,请下载查看





/*
version : 1.0
author : huxg
date : 2008-10-1
*/
var Reg = {};

/************************数字部分***********************/
//数字
Reg["num"] = /^\d+$/;
//整数
Reg["int"] = /^(-|\+)?\d+$/;
//正整数(用于ID的验证)
Reg["int+"] = /^[1-9]+\d*$/;
//负整数
Reg["int-"] = /^-\d+$/;

Reg.isDouble = function(value,point,sign){
try{
var signstr = "",pointstr = "";
if(sign == "+")
signstr = "(\\+)?";
else if(sign == "-")
signstr = "-";
else
signstr = "(-|\\+)?";
if(isNaN(point))//不限制小数
pointstr = "(\\d+(\\.)\\d+)|(\\d+)";
else{//限制小数
if(point<=0)//无小数
pointstr = "\\d+";
else//有小数
pointstr = "\\d+(\.)\\d{"+point+"}";
}
var reg = new RegExp("^"+signstr+"("+pointstr+")$");
return reg.test(value);
}catch(e){
throw e;
}
};
/************************字符部分***********************/
//英文
Reg["en"] = /^[a-zA-Z]+$/;
//大写英文
Reg["capture"] = /^[A-Z]+$/;
//小写英文
Reg["little"] = /^[a-z]+$/;
//英文单词(包括下划线和数字)
Reg["word"] = /^\w+$/;
//中文
Reg["zh"] = /^[\u4E00-\uFA29]+$/;
//中英混合
Reg["zh-en"] = /^[\u4E00-\uFA29a-zA-Z]+$/;
Reg["zh-en-num"] = /^[\u4E00-\uFA29a-zA-Z0-9]+$/;
Reg["zh-word"] = /^[\u4E00-\uFA29\w]+$/;
//英文数字
Reg["en-num"] = /^[a-zA-Z0-9]+$/;
//是否为空,包括空字符
Reg["blank"] = /^\s*$/;

/************************应用部分***********************/
//邮政编码(中国)
Reg["zip"] = /^\d{6}$/;
//ip地址
Reg["ip"] = /^[0-2]?[0-5]?[0-5]{1}\.[0-2]?[0-5]?[0-5]{1}\.[0-2]?[0-5]?[0-5]{1}\.[0-2]?[0-5]?[0-5]{1}$/;
//QQ
Reg["qq"] = /^\d{4,11}$/;
//mobile
Reg["mobile"] = /^1\d{12}$/;
//tel
Reg["tel"] = /^(\d+\-?\d+)+$/;
//邮箱
Reg["email"] = /^\w+@\w+\.(com|cn)(\.(com|cn))?$/;

//日期(yyyy-mm-dd)
Reg["date-a"] = /^\d{4}-(([0]?[1-9])|10|11|12)(-(([0]?[1-9])|(1[0-9])|(2[0-9])|(3[0-1])))?$/;
//到天
Reg["date-d"] = /^\d{4}-(([0]?[1-9])|10|11|12)-(([0]?[1-9])|(1[0-9])|(2[0-9])|(3[0-1]))$/;
//到月
Reg["date-m"] = /^\d{4}-(([0]?[1-9])|10|11|12)$/;
//到天
Reg["date"] = Reg["date-d"];
//时间(hh:mm:ss || hh:mm)
Reg["time-a"] = /^(([0]?[0-9])|(1[0-9])|(2[0-3])):(([0]?[0-9])|([1-5][0-9]))(:(([0]?[0-9])|([1-5][0-9])))?$/;
//到秒
Reg["time-s"] = /^(([0]?[0-9])|(1[0-9])|(2[0-3])):(([0]?[0-9])|([1-5][0-9])):(([0]?[0-9])|([1-5][0-9]))$/;
//到分
Reg["time-m"] = /^(([0]?[0-9])|(1[0-9])|(2[0-3])):(([0]?[0-9])|([1-5][0-9]))$/;
//到秒
Reg["time"] = Reg["time-s"];
//长时间(yyyy-mm-dd hh:mm) 或 (yyyy-mm-dd hh:mm:ss)
Reg["times"] = /^\d{4}-(([0]?[1-9])|10|11|12)-(([0]?[1-9])|(1[0-9])|(2[0-9])|(3[0-1]))\x20(([0]?[0-9])|(1[0-9])|(2[0-3])):(([0]?[0-9])|([1-5][0-9]))(:(([0]?[0-9])|([1-5][0-9])))?$/;
//只验证格式(做到最近似验证),未对具体的编码验证,只接收1900年到2099年出生的身份证
Reg["idcard"] = /^[1-9]\d{5}(19|20)?\d{2}((0[1-9])|(1[0-2]))((0[1-9])|(1[0-9])|(2[0-9])|(3[0-1]))\d{3}[X0-9]$/;

//根据正则检查
Reg.test = function(value,regstr,nullable){
try{
if(nullable){
if(!value || value.length==0)
return true;
}
if(regstr instanceof RegExp)
return regstr.test(value);
else if(typeof(regstr) == "string"){
var lowreg = regstr.toLowerCase();
if(Reg[lowreg])
return Reg[lowreg].test(value);
else{
var r = new RegExp(regstr);
return r.test(value);
}
}
}catch(e){
throw e;
}
};
//精确验证身份证
/*参数部分*/
//身份证号:必选
//生日:可选,传入参数均为字符型,生日为"yyyymmdd"格式即可
//地区编码:可选,可传3位或者6位,3位为前3个验证,6位精确到县
//性别:可选,"M"代表男 "F"代表女 或者1代表男,2代表女
Reg.realIdCard = function(idcard,birth,areacode,sex){
try{
if(!(Reg.test(idcard,"idcard",false)))//精确格式不匹配
return false;
//计算校正码并验证
if(idcard.length == 18){
var jcodes =["1","0","X","9","8","7","6","5","4","3","2"];
var cardWi = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1];
var mod = 0;
for(var i=0;i<17;i++){
var temp = parseInt(idcard.charAt(i));
mod += temp * cardWi[i];
}
mod = mod%11;
if(idcard.charAt(17) != jcodes[mod])
return false;
}
if(birth){//验证生日部分
var birstr = "";
if(idcard.length==18)
birstr = idcard.substring(6,14);
else if(idcard.length==15)
birstr = "19" + idcard.substring(6,12);
if(birstr != birth)
return false;
}
if(areacode && areacode.length>0){//验证地区编码部分,3或6位匹配
if(areacode.length == 6){
if(areacode != idcard.substring(0,6))
return false;
}
else if(areacode.length == 3){
if(areacode != idcard.substring(0,3))
return false;
}
}
if(sex){//验证性别部分,"M"代表男 "F"代表女 或者1代表男,2代表女
var sexnum = "";
if(idcard.length==18)
sexnum = idcard.substring(14,17);
else if(idcard.length==15)
sexnum = idcard.substring(11,14);
var sexint = parseInt(sexnum);
var sexmod = sexint%2;
if((sex == "M" || sex == 1) && sexmod == 0)
return false;
if((sex == "F" || sex == 2 ) && sexmod == 1)
return false;
}
return true;
}catch(e){
throw e;
}
};
分享到:
评论

相关推荐

    c++写的正则表达式验证工具

    综上所述,这个"C++写的正则表达式验证工具"利用了Boost库中的`boost::regex`,为C++程序员提供了一个便捷的正则表达式验证平台,有助于他们调试和测试正则表达式,提升开发效率。通过查看源代码,学习者可以深入...

    正则表达式验证工具,正则表达式校验工具

    正则表达式验证工具 V1.0 本软件主要用于检测正则表达式是否正确。 运行环境:本软件为绿色软件,无需安装,但需要Microsoft .NET Framework 4 支持,如果没有请前去下载(下载路径:...

    表单验证的正则表达式

    表单验证的正则表达式html与js表单验证的正则表达式html与js表单验证的正则表达式html与js

    正则表达式转换工具

    - 数据验证:在表单提交时,可以使用正则表达式验证输入格式,如邮箱、电话号码等。 - 文件搜索:在代码编辑器中,使用正则表达式快速查找和替换特定模式的文本。 - 数据清洗:在数据预处理阶段,正则表达式可以...

    vb正则表达式实例(正则表达式测试程序)

    - **Regex对象**:在VB.NET中,正则表达式操作主要通过`System.Text.RegularExpressions`命名空间下的`Regex`类实现。 - **构造函数**:创建`Regex`对象时,需要传入一个正则表达式字符串,如`New Regex("模式")`...

    pb 使用正则表达式源码pbregexp

    在PowerBuilder中,正则表达式通常用于数据验证、文本处理、搜索和替换等任务,能够提高代码的灵活性和效率。 正则表达式是一种模式匹配语言,它允许开发者用简洁的语法来描述一组字符串的共同特征。在PowerBuilder...

    VC、VC++,MFC 正则表达式类库

    1. `CRegEx`:这是MFC中的核心正则表达式类,用于表示一个正则表达式模式。它提供了构造、编译、匹配、替换等功能。例如,你可以创建一个`CRegEx`对象,用字符串初始化表达式,然后调用`Compile`方法来验证该表达式...

    正则表达式测试工具C#版(src)

    在C#编程语言中,正则表达式被广泛应用于数据验证、文本提取、格式转换等多个场景。本项目提供了一个C#编写的正则表达式测试工具,包含完整的源代码,可以帮助开发者调试和测试他们的正则表达式,支持查找和替换功能...

    常用验证正则表达式

    常用验证正则表达式,手机号验证,身份证号验证,邮箱验证,等等,

    正则表达式(Deelx版)|正则表达式(Deelx版)支持库

    正则表达式(Deelx版)是一种强大的文本处理工具,它允许程序员和用户通过预定义的模式来匹配、查找、替换或者分析字符串。Deelx版是专门为提高正则表达式性能和功能而设计的一个支持库,适用于各种编程语言和应用场景...

    正则表达式验证金额格式

    在本场景中,我们关注的是如何使用正则表达式来验证金额格式。金额格式通常要求精确到小数点后两位,并且可能包含正负号。下面将详细介绍如何构建一个适用于这种需求的正则表达式。 首先,让我们了解一个基本的正则...

    三目运算符+正则表达式

    比如,在一个输入验证功能中,我们可以用三目运算符判断用户输入是否为空,然后根据结果使用正则表达式进行进一步的验证: ```javascript let input = document.getElementById('emailInput').value; let isValid =...

    jq非空验证,js正则表达式验证邮箱和手机号码

    对于手机号码验证,假设只接受以1开头的11位数字,正则表达式可以写为: ```javascript var phoneRegex = /^1[0-9]{10}$/; ``` 这个正则表达式会检查字符串是否以1开头,且后面跟了10位数字。 3. **HTML**: ...

    qt使用正则表达式限制lineEdit的输入,对正则表达式进行了封装,可以直接引入,工程编译正常

    在Qt框架中,正则表达式(Regular Expression)是一种强大的文本处理工具,它允许程序员以结构化的方式匹配、查找、替换或验证字符串。本项目针对Qt的lineEdit组件,通过正则表达式实现了输入限制功能,使得lineEdit...

    使用正则表达式验证一年的12个月份

    在IT行业中,正则表达式是处理字符串时不可或缺的一部分,尤其在数据验证、文本提取等方面。在这个场景中,我们需要创建一个正则表达式来验证输入是否符合一年12个月份的格式。 首先,我们要明确一年中的12个月份的...

    只验证数字和字母的正则表达式

    在提供的示例代码中,我们看到一个简单的登录页面,其中包含了一个名为 `AA` 的 JavaScript 函数,该函数用于验证用户输入的用户名是否符合上述正则表达式的规则。 ```javascript function AA() { var name = ...

    正则表达式验证器,验证常用的编程语言的正则表达式

    在使用过程中,用户可以输入自己的正则表达式,然后添加一些测试字符串,应用会根据这些字符串判断正则表达式的匹配情况,从而帮助用户快速调试和优化他们的正则表达式。 正则表达式的基础概念包括: 1. **字符集*...

    正则表达式大全 - 收集的最常用正则表达式

    6. 匹配Email地址:`w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*` - 这个正则表达式用于验证Email地址的格式,但可能无法匹配所有有效的Email地址,因为Email地址的规则相当复杂。 7. 匹配网址URL:`[a-zA-z]+://[^s]*` ...

    测试正则表达式软件

    正则表达式(Regular Expression,简称regex)是用于匹配字符串的一种模式,广泛应用于文本处理、数据验证、搜索和替换等场景。在Java编程语言中,正则表达式是一个强大的工具,能够帮助开发者高效地处理字符串。...

    验证数字的正则表达式集

    ### 验证数字的正则表达式集 在软件开发及数据处理中,正则表达式是一种非常强大的工具,用于模式匹配、搜索、替换等文本处理任务。对于数字的验证,正则表达式同样有着广泛的应用场景。下面将对给定的文件中的各个...

Global site tag (gtag.js) - Google Analytics