当初在学习正则表达式的时候,一度被这玩意整得人麻了,使用短短的语义化代码,一旦正则表达式过于长的话,除了正则表达式的编写人员外,其他人想要读懂这个正则表达式需要费很大的工夫。正则表达式一般用于验证,常见于登录注册页面和需要验证的地方。
正则表达式分为几个大类,我们首先看看第一个大类:元字符
. | 匹配除换行符外的所有字符 |
\n | 匹配一个换行符 |
^ |
匹配以某个字符串开头 |
& |
匹配以某个字符串结尾 |
\w | 匹配数字字母下划线 |
\d | 匹配数字 |
\s | 匹配所有的空白字符 |
\b |
匹配单词边界 |
\u |
匹配unicode字符编码 |
例:\d\d\w 匹配开头两个数字,第三个为数字字母或下划线的字符。
我们再来看第二大类:反义元字符
\W | 匹配非数字字母下划线 |
\D | 匹配非数字 |
\S | 匹配所有的非空白字符 |
\B |
匹配非单词边界 |
我们把反义元字符与元字符对照可以得出一个显著的结论,就是大写字母是元字符的反面,理解了元字符,反义字符就更加容易理解。
例:/d/D/D/d 匹配一个数字、非数字、非数字、数字的字符串。
第三类:转义字符
如果我们需要匹配一个斜杠时,直接打出斜杠明显是不行的,这个时候,在正则表达式特殊字符前面再加一个斜杠就可以了。
例:\\\.\* 匹配\.*
第四类:限定字符
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
限定字符可以配合元字符进行使用。
例:\w+\d 匹配一个至少以数字字母下划线开头,前在后续有数字的一个字符串
常用正则表达式整理(摘自菜鸟教程)
只能输入数字:"^[0-9]*$"。
只能输入n位的数字:"^"d{n}$"。
只能输入至少n位的数字:"^"d{n,}$"。
只能输入m~n位的数字:。"^"d{m,n}$"
只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"。
只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"。
只能输入有1~3位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"。
只能输入非零的正整数:"^"+?[1-9][0-9]*$"。
只能输入非零的负整数:"^"-[1-9][]0-9"*$。
只能输入长度为3的字符:"^.{3}$"。
只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$"。
只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"。
只能输入由26个小写英文字母组成的字符串:"^[a-z]+$"。
只能输入由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"。
只能输入由数字、26个英文字母或者下划线组成的字符串:"^"w+$"。
验证用户密码:"^[a-zA-Z]"w{5,17}$"正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。
验证是否含有^%&’,;=?$""等字符:"[^%&’,;=?$"x22]+"。
只能输入汉字:"^["u4e00-"u9fa5]{0,}$"
验证Email地址:"^"w+([-+.]"w+)*@"w+([-.]"w+)*"."w+([-.]"w+)*$"。
验证InternetURL:"^http://(["w-]+".)+["w-]+(/["w-./?%&=]*)?$"。
验证电话号码:"^("("d{3,4}-)|"d{3.4}-)?"d{7,8}$"正确格式为:"XXX-XXXXXXX"、"XXXX- XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。
验证身份证号(15位或18位数字):"^"d{15}|"d{18}$"。
验证一年的12个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"1"~"12"。
验证一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"和"1"~"31"。