正则常用元素:
边界:
- ^ 匹配开始
- $ 匹配结束
- \b 匹配零宽单词边界 (如:er\b 可以匹配never中的er,不能匹配herb中的er)
字符类:
- \d 匹配数字,等价于[0-9]
- \D 匹配非数字,等价于[^0-9]
- \w 匹配字母数字字符下划线,等价于[A-Za-z0-9]
- \W 匹配非词中字符,等价于[^\w]
- \s 匹配空白符(空格、换行符、制表符、换页符等)
数量词:
- X+ 匹配前表达式1次或多次
- X* 匹配前表达式0次或多次
- X? 匹配前表达式0次或1次
逻辑:
- [^] 反义集合 ([ ^\abc]等价于[ ^a-c])
分组:
- (X) 捕获X ( 用 /正则/.exec(式子)得到逐个捕获后的数组 )
- (?:X) 使其不会捕获X
常用正则表达式
一、校验数字的表达式
- 数字:^ [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}$ - 可以输入含有^%&’,;=?KaTeX parse error: Can't use function '\"' in math mode at position 1: \̲"̲等字符:[^ %&',;=?\x22]+ 12
禁止输入含有的字符:[^\x22]+
三、特殊需求表达式(Email,域名,手机号码等)
-
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}$
-
中文字符的正则表达式:[\u4e00-\u9fa5]
-
url: (\w+:)//([/]+)(/[?]+)?(?:?([#]+))?(#.)?$
协议:(\w+:)
主机名:([^/]+)
路径:(/[^?]+)
搜索:(?([^#]+))
哈希:(#.)