正则表达式测试器

原始文本或字符串

正则表达式 分享链接

   
 

遇到的问题

正则表达式语法

正则表达式是查找匹配字符中的强大手段,正则表达式对于处理字符串的重要性甚至可以理解为 SQL 语句对操作数据库的重要性。而且正则表达式是行业标准,适用于任何语言。

常用字符

. 匹配任意单个字符,默认不包括回车符\r和换行符\n,除非使用了修饰符s
[\s\S] 匹配任意单个字符,包括回车符和换行符
\d 或 [0-9] 匹配任意数字
\D 匹配任意一个不是数字的字符,与\d相反,也可以写作[^\d][^0-9]
[a-z] 匹配任意小写英文字符
[A-Z] 匹配任意大写英文字符
\w 匹配任意阿拉伯字母,数字和下划线, 相当于[0-9a-zA-Z_]
\W \w相反,
相当于[^0-9a-zA-Z_]
\s 匹配空白字符,包括空格符,制表符,换行符,换页符和其他空格字符
\S 匹配一个非空白符,与\s相反

字符集合

使用方括号[]包围起来表示字符集合,在字符集合中特殊字符可以不使用反斜杠\进行转义,除了[]-

[abc] 字符组,表示匹配集合中的任意一个字符。
- 表示区间,如`[a-z]`表示匹配所有英文字母,`[0-9]`表示匹配所有数字
如果要在字符集合中匹配中横线,可以使用`\`进行转义,也可以放在字符集合的最后,如`[a-z0-9_-]`
[^abc] 反义字符组,匹配不是集合中字符的一个字符,可以用`-`来指定范围。例如`[^\d]`表示所有不含数字
[a-z^ou] 混合用法,表示匹配字母a-z但不包括字母`o`和`u`

重复

? 匹配 0 次或 1 次,表示有或者没有
+ 重复一次或多次,即至少一次
* 重复 0 次或多次
{n} 重复 n 次
{m,n} 重复最少 m 次,最多 n 次
{m,} 重复最少 m 次

匹配组或分组

( ) 匹配组在匹配到结果时可以直接通过索引得到相应的捕获结果
| 表示“或”,如(hello|hi)匹配hello>或hi都可以

边界

^ 不在[ ]中时,匹配字符串每行的开始
$ 匹配字符串每行的结束
\b 匹配零宽单词边界,如/[a-z]+\b/匹配字符串"Hello World",得到Hello
\B 匹配非零宽单词边界,如/[a-z]+\B匹配字符串`"Hello World",得到Hell

非贪婪模式

? 在重复符号+后面加上问号?表示非贪婪匹配,如\d+?,匹配结果返回尽可能少的字符,否则返回尽可能多的字符

空白字符

\s 匹配任意空白字符
  匹配空格
\t 匹配一个水平制表符
\r 匹配一个回车符
\n 匹配一个换行符
\v 匹配一个垂直制表符

特殊字符

\ 转义符号
\. 匹配符号 .
\* 匹配符号 *
\+ 匹配符号 +
\? 匹配符号 ?
\^ 匹配符号 ^
\$ 匹配符号 $
\| 匹配符号 |
\( 和 \) 匹配符号 ()
\[ 和 \] 匹配符号 []
\{ 和 \} 匹配符号 {}
\\ 匹配符号 \

断言

断言用于查找匹配的前面的前面或后面是或者不是指定的字符或匹配,非常有用。“零宽”表示指定的匹配不返回;“正向”表“肯定”、“是”,“负向”表“否定”、“否”;“先行”指从左向右查找匹配,也可以理解是指定要匹配结果右侧的字符,“后行”是要匹配结果左侧是或者不是指定的字符。

(?=pattern) 零宽正向先行断言,设定指定匹配后面有哪些字符
(?!pattern) 零宽负向先行断言,设定指定匹配后面没有哪些字符
(?<=pattern) 零宽正向后行断言,设定指定匹配前面有哪些字符
(?<!pattern) 零宽负向后行断言,设定指定匹配前面没有哪些字符
(?:pattern) 非捕获组,表示匹配但不在结果集中返回

参考链接


微信公众号
码农老吴  |  星源工作室  |  开发月志  |  问题反馈
联系我们:wu@qross.io     手机/微信:18618171102
京 ICP 备 20027445 号
$(h1)!