常用正则表达式

2017-10-18  本文已影响31人  singmiya

一、常用的数字正则

含义 表达式
数字 ^[0-9]*$
n位的数字 ^\d{n}$
至少n位的数字 ^\d{n,}$
m-n位的数字 ^\d{m,n}$
零和非零开头的数字 ^(0|[1-9][0-9]*)$
非零开头的最多带两位小数的数字 ^([1-9][0-9]*)+(.[0-9]{1,2})?$
带1-2位小数的正数或负数 ^(\-)?\d+(\.\d{1,2})?$
正数、负数、和小数 ^(\-|\+)?\d+(\.\d+)?$
有两位小数的正实数 ^[0-9]+(.[0-9]{2})?$
有1~3位小数的正实数 ^[0-9]+(.[0-9]{1,3})?$
非零的正整数 ^[1-9]\d*$^([1-9][0-9]*){1,3}$^\+?[1-9][0-9]*$
非零的负整数 ^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$
非负整数 ^\d+$^[1-9]\d*|0$
非正整数 ^-[1-9]\d*|0$^((-\d+)|(0+))$
非负浮点数 ^\d+(\.\d+)?$^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
非正浮点数 ^((-\d+(\.\d+)?)|(0+(\.0+)?))$^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
正浮点数 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
负浮点数 ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
浮点数 ^(-?\d+)(\.\d+)?$^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$

二、常见字符串正则

含义 表达式
汉字 ^[\u4e00-\u9fa5]{0,}$
英文和数字 ^[A-Za-z0-9]+$^[A-Za-z0-9]{4,40}$
长度为3-20的所有字符 ^.{3,20}$
由26个英文字母组成的字符串 ^[A-Za-z]+$
由26个大写英文字母组成的字符串 ^[A-Z]+$
由26个小写英文字母组成的字符串 ^[a-z]+$
由数字和26个英文字母组成的字符串 ^[A-Za-z0-9]+$
由数字、26个英文字母或者下划线组成的字符串 ^\w+$ 或 ^\w{3,20}$
中文、英文、数字包括下划线 ^[\u4E00-\u9FA5A-Za-z0-9_]+$
中文、英文、数字但不包括下划线等符号 ^[\u4E00-\u9FA5A-Za-z0-9]+$^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
可以输入含有^%&',;=?$"等字符 [^%&',;=?$\x22]+
禁止输入含有~的字符 [^~\x22]+

三、特殊需求表达式

含义 表达式
Email地址 ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
域名 [a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
InternetURL [a-zA-z]+://[^\s]*^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
手机号码 ^(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}$
电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX) ^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
国内电话号码(0511-4405222、021-87888822) \d{3}-\d{8}|\d{4}-\d{7}
身份证号(15位、18位数字) ^\d{15}|\d{18}$
短身份证号码(数字、字母x结尾) ^([0-9]){7,18}(x|X)?$^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$
帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线) ^[a-zA-Z][a-zA-Z0-9_]{4,15}$
密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线) ^[a-zA-Z]\w{5,17}$
强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间) ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
日期格式 ^\d{4}-\d{1,2}-\d{1,2}
一年的12个月(01~09和1~12) ^(0?[1-9]|1[0-2])$
一个月的31天(01~09和1~31) ^((0?[1-9])|((1|2)[0-9])|30|31)$
xml文件 ^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
中文字符的正则表达式 [\u4e00-\u9fa5]
双字节字符 (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)) [^\x00-\xff]
空白行的正则表达式(可以用来删除空白行) \n\s*\r
HTML标记的正则表达式 (网上流传的版本太糟糕,上面这个也仅仅能部分,对于复杂的嵌套标记依旧无能为力) <(\S*?)[^>]*>.*?</\1>|<.*? />
首尾空白字符的正则表达式 (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式) ^\s*|\s*$或(^\s*)|(\s*$)
腾讯QQ号 (腾讯QQ号从10000开始) [1-9][0-9]{4,}
中国邮政编码 (中国邮政编码为6位数字 [1-9]\d{5}(?!\d))
IP地址(提取IP地址时有用) \d+\.\d+\.\d+\.\d+
IP地址 ((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))

四、商业、社会类

  1. 营业执照注册号(共两种:15位和18位):
    a. 15位:\d{15} (纯数字)
    b. 18位:/^([0-9ABCDEFGHJKLMNPQRTUWXY]{2})([0-9]{6})([0-9ABCDEFGHJKLMNPQRTUWXY]{9})([0-9Y])$/

    注: 不管是15位还是18位最后一位数字都是验证位,可进一步验证号码法律上的合法性(具体自己gg)。

  2. 组织机构代码
    代码组成共有9位。前八位有数字(或大写拉丁字母)组成,最后一位位校验位。
    校验码计算公式:(如下图)

    校验码计算公式

校验码计算代码(js实现)

//验证组织机构合法性方法  
   function orgcodevalidate(value){  
    if(value!=""){  
           var values=value.split("-");  
            var ws = [3, 7, 9, 10, 5, 8, 4, 2];    
            var str = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';    
            var reg = /^([0-9A-Z]){8}$/;     
            if (!reg.test(values[0])) {    
                return true    
            }    
            var sum = 0;    
            for (var i = 0; i < 8; i++) {    
                sum += str.indexOf(values[0].charAt(i)) * ws[i];    
            }    
            var C9 = 11 - (sum % 11);  
            var YC9=values[1]+'';  
            if (C9 == 11) {    
                C9 = '0';    
            } else if (C9 == 10) {    
                C9 = 'X'  ;  
            } else {    
                C9 = C9+'';    
            }   
            return YC9!=C9;  
    }  
   }  
上一篇 下一篇

猜你喜欢

热点阅读