发布时间:2024-01-20 16:30
. 匹配除换行符以外的任意字符 |
|
\\w 匹配字母或数字或下划线或汉字 |
|
\\s 匹配任意的空白符 |
|
\\d 匹配数字 |
|
\\b 匹配单词的开始或结束 |
|
^ 匹配字符串的开始,以什么什么开始(在集合字符里[^a]表示非(不匹配)的意思 |
|
$ 匹配字符串的结束,必须以该字符串结束 |
对表中内容详细介绍
(1). 匹配任何任意字符 例如 . 可以匹配 1,n,*,+,- ,等
(2)\\d\\w\\s 匹配第一个字符为数字,第二个字符为字母或数字、或下划线或汉字,第三字符为空格的字符串 例如:11 ,2a , 1_ 当然 \\S大写的是和 \\s 取相反的结果
(3)^\\d\\d\\d$ 匹配三个全部都为数字的字符串 例如: 123,456,789
还可以用于验证输入的字符串是否符合qq(身份证号)的验证 :
例如:^\\d{8}$ 匹配8位数字的qq号,^\\d{18}$匹配18位均为数字的身份证号
符号 | 说明 |
---|---|
\\W | 匹配到的不是字母数字下划线,汉字的字符 |
\\S | 表示匹配到的空白符的字符 |
\\D | 表示匹配到的任意非数字的字符 |
\\B | 匹配不是单词开头或结束的位置 |
详细解释:
\\W 匹配除字母、数字、下划线、汉字以为的字符形如 +,-,*
\\S 匹配除空格以外的任意字符形如:1,* ,)
[^abcde]匹配除abcde以为的其他字符 如 e,f,g,h
符号 | 说明 |
---|---|
* | 表示至少出现零次或者多次 |
+ | 表示至少出现一次或者多次 |
? | 出现零次或者一次 |
{n} | 出现n次 |
{n,m} | 至少出现n次最多出现m次 |
{n,} | 至少出现n次 |
对表中内容详细讲解:
(1)\\d* 匹配重复0次或多次数字 例如:可能为空 或 任意数字 (2,3。。。。)
(2)\\d+ 匹配重复1次或多次数字 例如:可能为1个或多个数字 1,23,234,2345,…
(3)\\d? 匹配重复次个或者一次数字 例如:可能为空或者任意的一个数字(1,2,…)
(4)\\d{8}匹配重复8次数字 例如:123456768
(5)\\d{4,}匹配重复至少4次数字 例如:1234,12345,124244
(6)^\\d{8,11}$ 匹配重复8-11次数字 例如:12345678,123456789,1234567890,12345678901
在实际的开发中,可能会遇到要比配元字符的情况,这个时候就需要进行字符转义,如元字符 . * \\ 需要转换为. * \\
例如: 需要匹配qq邮箱 \\d{8,}+qq+.+com 在这里的. 就需要加斜杠
字符分枝多用于满足不同情况的选择,用“|”将不同的条件分割开来,比如有些固定电话区号有三位,有些有四位,这个时候可以采用字符分枝
例如:\\d{3}-\\d{8}|\\d{4}-\\d{8} 可以匹配两种不同长度区号的固定电话
下边的IP地址正则表达式也有用到字符分枝
字符分组多用于将多个字符重复,主要通过使用小括号()来进行分组
形如:(\\d\\w){3} 重复匹配3次(\\d\\w)
常用于表示IP地址 形如: ((25[0-5]|2[0-4][0-9]|[0-1]\\d\\d).){3}(25[0-5]|2[0-4][0-9]|[0-1]\\d\\d)
解析:先把IP地址分为两部分一部分是123.123.123. 另一部分是123,又因Ip最大值为255,所以先使用分组,然后在组里边再进行选择,组里也有三部分,0-199,200-249,250-255,分别和上述的表达是对应,最后还要注意分组之后还要加上一个.,因为是元字符所以要转义故加上. 然后再把这部分整体看做是一个组,重复三次,再加上仅有数字的一组也就是不带.的那一组即可完成IP地址的校验
数字:1*$
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+)?$
有两位小数的正实数:2+(.[0-9]{2})?$
有1~3位小数的正实数:3+(.[0-9]{1,3})?$
非零的正整数:4\\d*$ 或 ^([1-9][0-9]){1,3}$ 或 ^+?[1-9][0-9]$
非零的负整数:^-[1-9][]0-9\"$ 或 ^-[1-9]\\d$
非负整数:^\\d+$ 或 5\\d*|0$
非正整数:^-[1-9]\\d*|0$ 或 ^((-\\d+)|(0+))$
非负浮点数:^\\d+(.\\d+)?$ 或 6\\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$
正浮点数:7\\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)$
二、校验字符的表达式
汉字:8{0,}$
英文和数字:9+$ 或 10{4,40}$
长度为3-20的所有字符:^.{3,20}$
由26个英文字母组成的字符串:11+$
由26个大写英文字母组成的字符串:12+$
由26个小写英文字母组成的字符串:13+$
由数字和26个英文字母组成的字符串:14+$
由数字、26个英文字母或者下划线组成的字符串:^\\w+$ 或 ^\\w{3,20}$
中文、英文、数字包括下划线:15+$
中文、英文、数字但不包括下划线等符号:16+$ 或 17{2,20}$
可以输入含有^%&\',;=?KaTeX parse error: Can\'t use function \'\\\"\' in math mode at position 1: \\̲\"̲等字符:[^%&\',;=?\\x22]+ 12 禁止输入含有的字符:[^\\x22]+
其它:
.*匹配除 \\n 以外的任何字符。
/[\\u4E00-\\u9FA5]/ 汉字
/[\\uFF00-\\uFFFF]/ 全角符号
/[\\u0000-\\u00FF]/ 半角符号
三、特殊需求表达式
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字节,允许字母数字下划线):18[a-zA-Z0-9_]{4,15}$
密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):19\\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)$
钱的输入格式:
1.有四种钱的表示形式我们可以接受:“10000.00” 和 “10,000.00”, 和没有 “分” 的 “10000” 和 “10,000”:20[0-9]*$
2.这表示任意一个不以0开头的数字,但是,这也意味着一个字符\"0\"不通过,所以我们采用下面的形式:^(0|[1-9][0-9]*)$
3.一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号:^(0|-?[1-9][0-9]*)$
4.这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧.下面我们要加的是说明可能的小数部分:21+(.[0-9]+)?$
5.必须说明的是,小数点后面至少应该有1位数,所以\"10.\"是不通过的,但是 “10” 和 “10.2” 是通过的:22+(.[0-9]{2})?$
6.这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样:23+(.[0-9]{1,2})?$
7.这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样:24{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$
23 8.1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$
备注:这就是最终结果了,别忘了\"+“可以用”*\"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里
xml文件:^([a-zA-Z]±?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
中文字符的正则表达式:[\\u4e00-\\u9fa5]
双字节字符:[^\\x00-\\xff] (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))
空白行的正则表达式:\\n\\s*\\r (可以用来删除空白行)
HTML标记的正则表达式:<(\\S*?)[^>]>.?\\1>|<.*? /> (网上流传的版本太糟糕,上面这个也仅仅能部分,对于复杂的嵌套标记依旧无能为力)
首尾空白字符的正则表达式:^\\s*|\\s*KaTeX parse error: Undefined control sequence: \\s at position 4: 或(^\\̲s̲*)|(\\s*) (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)
腾讯QQ号:[1-9][0-9]{4,} (腾讯QQ号从10000开始)
中国邮政编码:[1-9]\\d{5}(?!\\d) (中国邮政编码为6位数字)
IP地址:\\d+.\\d+.\\d+.\\d+ (提取IP地址时有用)
IP地址:((??:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))
0-9 ↩︎
0-9 ↩︎
0-9 ↩︎
1-9 ↩︎
1-9 ↩︎
1-9 ↩︎
1-9 ↩︎
\\u4e00-\\u9fa5 ↩︎
A-Za-z0-9 ↩︎
A-Za-z0-9 ↩︎
A-Za-z ↩︎
A-Z ↩︎
a-z ↩︎
A-Za-z0-9 ↩︎
\\u4E00-\\u9FA5A-Za-z0-9_ ↩︎
\\u4E00-\\u9FA5A-Za-z0-9 ↩︎
\\u4E00-\\u9FA5A-Za-z0-9 ↩︎
a-zA-Z ↩︎
a-zA-Z ↩︎
1-9 ↩︎
0-9 ↩︎
0-9 ↩︎
0-9 ↩︎
0-9 ↩︎