表单验证通用正则表达式

1、用户名正则

//用户名正则,4到16位(字母,数字,下划线,减号)

varuPattern = /^[a-zA-Z0-9_-]{4,16}$/;

//输出 true

console.log(uPattern.test("caibaojian"));

2、密码强度正则

//密码强度正则,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符

varpPattern = /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/;

//输出 true

console.log("=="+pPattern.test("caibaojian#"));

3、整数正则

//正整数正则

varposPattern = /^\d+$/;

//负整数正则

varnegPattern = /^-\d+$/;

//整数正则

varintPattern = /^-?\d+$/;

//输出 true

console.log(posPattern.test("42"));

//输出 true

console.log(negPattern.test("-42"));

//输出 true

console.log(intPattern.test("-42"));

4、数字正则

可以是整数也可以是浮点数

//正数正则

varposPattern = /^\d*\.?\d+$/;

//负数正则

varnegPattern = /^-\d*\.?\d+$/;

//数字正则

varnumPattern = /^-?\d*\.?\d+$/;

console.log(posPattern.test("42.2"));

console.log(negPattern.test("-42.2"));

console.log(numPattern.test("-42.2"));

5、Email正则

//Email正则

varePattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;

//Email地址:

varePattern = ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

//输出 true

console.log(ePattern.test(<a href="mailto:[email protected]"rel="external nofollow">[email protected]</a>));

6、手机号正则

//第一种手机号正则

varmPattern = /^1[3456789]\d{9}$/; //http://caibaojian.com/regexp-example.html

//第二种手机号正则

varmPattern = ^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$

//输出 true

console.log(mPattern.test("13989255763"));

7、身份证号正则

//身份证号(18位)正则

varcP = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;

//身份证号(15位数字):

varcP = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/

//短身份证号码(数字、字母x结尾):

varcP = ^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$

//输出 true

console.log(cP.test("11010519880605371X"));

8、URL正则

//URL正则

varurlP= /^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/;

//输出 true

console.log(urlP.test(<a href="http://caibaojian.com"rel="external nofollow">http://caibaojian.com</a>));

9、ipv4地址正则

//ipv4地址正则

varipP = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;

//输出 true

console.log(ipP.test("115.28.47.26"));

10、16进制颜色正则

//RGB Hex颜色正则

varcPattern = /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/;

//输出 true

console.log(cPattern.test("#b8b8b8"));

11、日期正则

//日期正则,简单判定,未做月份及日期的判定

vardP1 = /^\d{4}(\-)\d{1,2}\1\d{1,2}$/;

//输出 true

console.log(dP1.test("2017-05-11"));

//输出 true

console.log(dP1.test("2017-15-11"));

//一年的12个月(01~09和1~12):

vardP2 = ^(0?[1-9]|1[0-2])$

//一个月的31天(01~09和1~31):

vardP3 = ^((0?[1-9])|((1|2)[0-9])|30|31)$

//日期正则,复杂判定

vardP4 = /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/;

//输出 true

console.log(dP4.test("2017-02-11"));

//输出 false

console.log(dP4.test("2017-15-11"));

//输出 false

console.log(dP4.test("2017-02-29"));

12、QQ号码正则

//QQ号正则,5至11位

varqqPattern = /^[1-9][0-9]{4,10}$/;

//输出 true

console.log(qqPattern.test("65974040"));

13、微信号正则

//微信号正则,6至20位,以字母开头,字母,数字,减号,下划线

varwxPattern = /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/;

//输出 true

console.log(wxPattern.test("caibaojian_com"));

14、车牌号正则

//车牌号正则

varcPattern = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/;

//输出 true

console.log(cPattern.test("粤B39006"));

15、包含中文正则

//包含中文正则

varcnPattern = /[\u4E00-\u9FA5]/;

//输出 true

console.log(cnPattern.test("董董董"));

16、信用卡、银行卡正则验证

信用卡、银行卡的验证规则是根据“模10”算法而来,“模10”算法(lnhn算法)的规则如下:

1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。

2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。

3、将奇数位总和加上偶数位总和,结果能被10整除则有效。

我国主流银行信用卡标准卡是16位卡号,借记卡一般是19位卡号,不完全是,因此以中国的卡号验证符合jQueryValidate验证规则。以下为JQuery Validate内置验证:

creditcard: function( value, element ) {

                     if ( this.optional( element ) ) {

                            return "dependency-mismatch";

                     }

                     // accept only spaces, digits and dashes

                     if ( /[^0-9 \-]+/.test( value ) ) {

                            return false;

                     }

varnCheck = 0,

nDigit = 0,

bEven = false,

                            n, cDigit;

                     value = value.replace( /\D/g, "" );

                     if ( value.length< 13 || value.length> 19 ) {

                            return false;

                     }

                     for ( n = value.length - 1; n >= 0; n--) {

cDigit = value.charAt( n );

nDigit = parseInt( cDigit, 10 );

                            if ( bEven ) {

                                   if ( (nDigit *= 2 ) > 9 ) {

nDigit -= 9;

                                   }

                            }

nCheck += nDigit;

bEven= !bEven;

                     }

                     return ( nCheck % 10 ) === 0;

              },

17、中英文、数字、下划线正则

//中英文、数字、下划线正则

varcnPattern =^[\u4e00-\u9fa5_a-zA-Z0-9]{1,20}$

18、邮政编码

varcnPattern =^[1-9]\d{5}(?!\d)$

19、密码强度

function  ops_pwd_set(obj) {  

    var pwd = obj;  

    if(typeof obj.value != 'undefined')  

        pwd = obj.value;  

    if(pwd == '')  

        return false;  

    var len = pwd.length;  

    if(pwd == '')  {  

        ops_show("密码不能为空",true);  

        return false;  

    }  

    //中文  

    if(/[\u4e00-\u9fa5]+/.test(pwd)){  

        ops_show("密码不能含有中文",true);  

        return false;  

    }  

    //空白  

    var tmppwd = pwd.replace(/\s+/g,"");  

    if(tmppwd != pwd){  

        ops_show("密码不能含有空白字符",true);  

        return false;  

    }  

    //长度  

    if( len < 6 || len > 20){  

        ops_show("密码长度需在6-20位之间",true);  

        return false;  

    }  

    //正则表达式  

    var is_all_num = /^\d+$/.test(pwd) ;  

    var have_num = /\d/.test(pwd) ;  

    var is_all_abc = /^[a-zA-Z]+$/.test(pwd) ;  

    var have_abc = /[a-zA-Z]/.test(pwd) ;  

    var have_strong = /[^a-zA-Z0-9]/.test(pwd) ;  

    var is_very_strong = pwd.split(/[^a-zA-Z_0-9]/).length > 2 ;  

    /** 

     * 禁用: 

     *  1)全为数字且少于8位 

     *  2)密码字符全部相同 

    */  

    var disable_msg = "此密码安全性太弱,不可用" ;  

    if(is_all_num && len < 8){  

        ops_show(disable_msg,true);  

        return false;  

    }  

    var i=0;  

    var apwd = pwd.split('');  

    for(i=1; i < len ; i ++)  

        if(apwd[i] != apwd[0])  

            break;  

    if(i >= len){  

        ops_show(disable_msg,true);  

        return false;  

    }  

    /** 

     * 极强: 

     *  1)数字与字母与其它可打印字符(大于2位)且大于等于8位 

     */  

    if( (have_num && have_abc && is_very_strong && len >= 8) ){  

        ops_show('<font color="#00cc00">极强</font>');  

        return true;  

    }  

    /** 

     * 强: 

     *  1)数字与字母与其它可打印字符且大于等于8位  

     *  2)数字与字母与其它可打印字符(大于2位)且小于8位 

     *  3)两两组合大于等于8位 

     */   

    if( (have_num && have_abc && have_strong && len >= 8)   

            || (have_num && have_abc && is_very_strong && len < 8)   

            || ( ( (have_num && have_strong) || (have_abc && have_strong) ) && len >= 8 ) ){  

        ops_show('<font color="#00cc00">强</font>');  

        return true;  

    }  

    /** 

     * 中: 

     *  1)数字与字母混合且大于等于8位 

     *  2)数字与字母与其它可打印字符且小于8位 

     *  3)两两组合 

     */  

    if( (have_num && have_abc && len >= 8) || (have_num && have_abc && have_strong && len < 8)   

            || ( (have_num && have_strong) || (have_abc && have_strong) ) ){  

        ops_show('<font color="#ff9900">密码强度中</font>');  

        return true;  

    }  

    /** 

     * 弱: 

     *  1)全部为数字或字母 

     *  2)数字与字母混合且少于8位 

     */  

    if( (is_all_num || is_all_abc) || (have_num && have_abc && len < 8) ){  

        ops_show('<font color="#ff0000">密码强度弱</font>');  

        return true;  

    }  

    //其它  

    ops_show('<font color="#ff0000">密码强度一般</font>');  

    return true;  

}  

20、非空验证

<body>

<form action="Untitled-1.html" method="post">

<input type="text" name="uid" id="uid"  onblur="Check()" />//文本框,用户输入内容。onblur是鼠标失去焦点时触发。

<input type="submit" value="确定" id="btn" onclick="return Check()" />//提交按钮,点击事件执行的内容根据return的值判断。

</form>

</body>

<script type="text/javascript">

function Check()

{

  var v = document.getElementById("uid").value;//取到用户输入的值

  if(v.trim().length==0)//对去掉空格后的值进行验证

  {

  alert("用户名不能为空");//输入值为空

    return false;//返回false

  }

  else//输入值不为空

  {

    return true;//返回true

  }

}

</script>

21、对比验证

<input type="text" name="pw1" id="pw1" />//两个文本框

<input type="text" name="pw2" id="pw2" />

<input type="submit" value="确定" id="btn" onclick="return Check()" />//提交按钮

 

</form>

</body>

<script type="text/javascript">

function Check()

{

  var v1 = document.getElementById("pw1").value;//第一个文本框的值

  var v2 = document.getElementById("pw2").value;//第二个文本框的值

  if(v1==v2)//如果两个文本框的值一样

  {

    return true;//返回true

  }

  else//如果两个文本框的值不一样

  {

    alert("两次输入的密码不相同");//输出"两次输入的密码不相同"

    return false;//返回false

  }

}

22、范围验证

<input type="text" name="age" id="age" />//输入年龄的文本框

<input type="submit" value="确定" id="btn" onclick="return Check()" />//提交按钮

</form>

</body>

<script type="text/javascript">

function Check()

{

  var v = parseInt(document.getElementById("age").value);//取年龄值

  if(v>=18 && v<=50) //如果年龄在范围内

  {

    return true;//返回true

  }

  else//如果不在范围内

  {

    alert("输入的年龄不在单位内");//输出"输入的年龄不在单位内"

  return false;//返回false

  }

}

23、域名

[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?

InternetURL

varePattern= [a-zA-z]+://[^\s]*

varePattern=  ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$

24、电话号码正则

电话号码(“XXX-XXXXXXX”、”XXXX-XXXXXXXX”、”XXX-XXXXXXX”、”XXX-XXXXXXXX”、”XXXXXXX”和”XXXXXXXX):

//国际常用电话号码

varePattern = ^($$\d{3,4}-)|\d{3.4}-)?\d{7,8}$

国内电话号码(0511-4405222、021-87888822):

//中国电话号码

varePattern = \d{3}-\d{8}|\d{4}-\d{7}

25、账号是否合法

帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):

//账号是否合法正则

varePattern = ^[a-zA-Z][a-zA-Z0-9_]{4,15}$

26、钱的输入格式

//有四种钱的表示形式我们可以接受:”10000.00″ 和 “10,000.00”, 和没有 “分” 的 “10000” 和 “10,000”:

varePattern = ^[1-9][0-9]*$

这表示任意一个不以0开头的数字,但是,这也意味着一个字符”0″不通过,所以我们采用下面的形式:

//不以0开头的数字

varePattern = ^(0|[1-9][0-9]*)$

一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号:

//一个或一个不以0开头的数字

varePattern =^(0|-?[1-9][0-9]*)$

这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧.下面我们要加的是说明可能的小数部分:

//一个0或者一个可能为负的开头不为0的数字

varePattern =^[0-9]+(.[0-9]+)?$

必须说明的是,小数点后面至少应该有1位数,所以”10.”是不通过的,但是 “10” 和 “10.2” 是通过的:

//小数点后面必须跟一位数

varePattern =^[0-9]+(.[0-9]{2})?$

这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样:

//小数点后面必须有两位数

varePattern =^[0-9]+(.[0-9]{1,2})?$

这样就允许用户只写一位小数。下面我们该考虑数字中的逗号了,我们可以这样:

//允许用户加入一个小数

varePattern =^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$

1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须:

//1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选

varePattern =^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$

备注:这就是最终结果了,别忘了”+”可以用”*”替代。如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里

27、xml文件

varePattern =^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$

28、HTML标记的正则表达式

varePattern =<(\S*?)[^>]*>.*?</\1>|<.*? />

(网上流传的版本太糟糕,上面这个也仅仅能部分,对于复杂的嵌套标记依旧无能为力)

29、首尾空白字符的正则表达式

varePattern =^\s*|\s*$或(^\s*)|(\s*$)

(可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)

30、IP地址

//第一种IP地址(提取IP地址时有用)

varePattern =\d+\.\d+\.\d+\.\d+

//第二种IP地址

varePattern =((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?

31、双字节字符

//双字节字符正则

varePattern =[^\x00-\xff]

(包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))

32、中文字符的正则表达式

//中文字符正则

varePattern =[\u4e00-\u9fa5]

33、空白行的正则表达式:

//空白行删除

varePattern =\n\s*\r (可以用来删除空白行)

猜你喜欢

转载自blog.csdn.net/qq_36344795/article/details/82963435