一、在线测试工具
https://regex101.com
二、基本用法
1、限定符:作用于一个字符
?
代表它前面的字符需要出现0次或者1次,即可有可无
如下:表示?前面的字符d可出现0或1次,因此匹配到use、used两个单词
*
代表它前面的字符可以没有也可以出现多次
如下:表示*前面的字符b可出现任意次数,因此匹配到ac、abc、abbbbbbc三个单词
+
匹配出现一次及以上的字符
如下:表示+前面的字符b要出现一次及以上,因此ac不符合要求
{6}
它前面的字符要出现6次
{2,}
它前面的字符要出现2次及以上
{2,6}
它前面的字符出现的次数为1到6之间(包括1到6次)
2、如何作用于多个字符
如下:将ab括起来,表示+前面的字符ab要出现一次及以上
3、“或”运算符
如下:先匹配a ,再匹配cat或dog
如下:如果省略(),表示要么是a cat,要么是dog
4、字符类
如下:匹配由abc这几个字母构成的单词
[a-z]+
表示匹配所有的小写英文字符
[a-zA-Z]+
表示匹配所有的英文字符
[a-zA-Z0-9]+
表示匹配所有的英文字符和数字
[^0-9]+
表示匹配所有的非数字字符(包括换行符)
5、元字符
\d
digit,表示数字字符,等同于[0-9]+
\w
表示英文字符、数字加下划线
\s
表示空白符,同时包含Tab字符及换行符
\D
表示非数字字符
\W
表示非英文字符、非数字、非下划线
\S
表示非空白字符
.*
表示任意字符,但是不包含换行符
^a
只匹配行首的a
a$
只匹配行尾的a
三、高级概念
1、贪婪匹配——>懒惰匹配
如下:贪婪匹配:.匹配任意字符,.+会匹配尽可能多的字符
如下:懒惰匹配:
?确保只匹配尖括号的内容,而不会匹配到尖括号外的其他内容
四、实例
1、IP地址匹配
ipv4的地址由四段数字构成,数字之间由.隔开
如下:\d+匹配任意数字,由于.为元字符代表任意字符,所以用/.转义