元字符
代码 | 说明 |
---|---|
. | 匹配除换行符意外的任意字符 |
\w | 匹配字母或数字或下划线或汉字 |
\s | 匹配任意的空白字符 |
\d | 匹配数字 |
\b | 匹配单词的开始或者结束 |
^ | 匹配单词的开始 |
$ | 匹配字符串的结束 |
字符转义
如果要想查元字符的话,比如要匹配www.baidu.com
,那么由于.
已经被用做元字符了,所以你需要\.
这样转义下才能匹配到.
重复
代码/语法 | 说明 |
---|---|
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复 n 次 |
{n,} | 重复 n 次货更多次 |
{n,m} | 重复 n 到 m 次 |
分支条件
比如我们需要同时匹配(010)223242322和0559-222341242,我们通常使用|
来进行区分,正则如下:
(0?\d{4}-\d{8})|(\(0\d{2}\)\d{8})
分组
比如,我们要匹配 ip 地址221.222.123.223
,我们就需要使用分组,通常我们使用小括号来指定子表达式,然后可以指定这个子表达式的重复次数
(\d{1,3}\.)\d{1,}
但是,这样,我们匹配到的也可能是300.300.300.300这样的不可能存在的 ip 地址,所以,我们只能使用冗长的分组
((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
反义
代码/语法 | 说明 |
---|---|
\W | 匹配任意不是字母,数字,下划线,汉子的字符 |
\S | 匹配任意不是空白的字符 |
\D | 匹配任意非数字的字符 |
\B | 匹配不是单词开头或结束的位置 |
[^x] | 匹配除了x 以外的任意字符 |
[^aeiou] | 匹配除了 aeiou 这几个字母以外的任意字符 |
举例,我们有一条字符串 cv?uuid=9f0d65cf6ba397d5b5cb0c9aa0c12df1&tc=113283078&p=kxescore.exe&c=1335&f=json
我们要匹配不包含 f=json
以外的内容,正则表达式如下:
[^(f=json)]