正则表达式在线测试工具
RegExr:https://regexr-cn.com/
红黑编程:http://tool.rbtree.cn/
正则表达式练习网站
编程胶囊:https://codejiaonang.com/#/
字符组
字符组([])允许匹配一组可能出现的字符。
例如:
- 要匹配任意数字可以使用[0-9];
- 如果想要匹配所有小写字母,可以写成[a-z];
- 想要匹配所有大写字母可以写成[A-Z]。
匹配特殊字符
正则表达使用了 - 号代表了区间,但是我们有时候需要匹配的符号就是 -号,该怎么办呢?
这个时候我们需要对-号进行转义操作,即 \-。
取反
可以通过在字符数组开头使用 ^ 字符实现取反操作
匹配不包含数字的字符组
快捷匹配数字和字母
快捷方式 | 描述 |
---|---|
\w |
与任意单词字符匹配,任意单词字符表示 [A-Z]、 [a-z]、[0-9]、_ |
\d | 与任意数字匹配 |
匹配空白字符
\s快捷方式可以匹配空白字符,比如空格,tab、换行等。
单词边界
\b 匹配的是单词的边界,例如,
\bmaster\b 就仅匹配有边界的master单词。
开始和结束
正则表达式中 ^指定的是一个字符串的开始,$指定的是一个字符串的结束。
任意字符
.字符代表匹配任何单个字符,它只能出现在方括号以外。
可选字符
可以使用 ? 符号指定一个字符、字符组或其他基本单元
例如:
在这里 u? 表示u是可选的,即可以出现也可以不出现,可以匹配的是 honor 和 honour 。
通过这个案例可以知道?的作用就是匹配它之前的字符0次或1次。
重复
重复区间
语法:{M,N},M是下界而N是上界。
开闭区间
有时候我们可能遇到字符组的重复次数没有边界,例如:
闭区间不写即可表示匹配一个或无数个。
速写
还可以使用两个速写字符指定常见的重复情况,可以使用 + 匹配1个到无数个,使用 *代表0个到无数个。
即:+等价于{1,},*等价于{0,}。