抽象但效率高,学会的话很方便:)
想为铁锈战争语法写高亮的,但是我不会写匹配模式,所以我开始学习正则表达式。 这篇文章可能会继续更新。
推荐网站:
类别 | 表达式 | 描述 |
---|---|---|
修饰符 | /.../g | 全局匹配 |
/.../i | 忽略大小写 | |
/.../m | 多行模式 | |
/.../s | 包含换行符 | |
特殊字符 | . | 匹配任意单个字符(除了换行符) |
^ | 匹配输入字符串的开始位置 | |
$ | 匹配输入字符串的结束位置 | |
* | 匹配前面的子表达式零次或多次 | |
+ | 匹配前面的子表达式一次或多次 | |
? | 匹配前面的子表达式零次或一次 | |
{n} | 匹配确定的n次 | |
{n,} | 至少匹配n次 | |
{n,m} | 最少匹配n次且最多m次 | |
[] | 匹配括号内的任意字符(字符集) | |
` | ` | |
\ | 转义特殊字符或表示特殊序列的开始 | |
预定义字符集 | \d | 匹配任意数字(等价于[0-9]) |
\D | 匹配任意非数字字符 | |
\w | 匹配任意字母数字字符(等价于[a-zA-Z0-9_]) | |
\W | 匹配任意非字母数字字符 | |
\s | 匹配任意空白字符(包括空格、制表符、换行符等) | |
\S | 匹配任意非空白字符 | |
量词 | * | 匹配前面的字符零次或多次 |
+ | 匹配前面的字符一次或多次 | |
? | 匹配前面的字符零次或一次 | |
{n} | 匹配前面的字符n次 | |
{n,} | 至少匹配n次 | |
{n,m} | 最少匹配n次且最多m次 | |
分组与捕获 | (...) | 将多个表达式组合成一个子表达式,并捕获匹配的文本 |
零宽断言 | ^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 | |
\b | 匹配一个单词边界 | |
\B | 匹配一个非单词边界 | |
(?=...) | 正向前瞻断言,匹配…前面的位置 | |
(?!...) | 负向前瞻断言,匹配除了…外前面的位置 | |
(?<=...) | 正向后瞻断言,匹配…后面的位置 | |
(?<!...) | 负向后瞻断言,匹配除了…外后面的位置 |
一般而言,我们通常使用/.../g
来进行全局匹配
/nihao/g
skdabgnihaoniasbf
这个是通配符,匹配任意字符,例如
/./g
saklnfobovibo
这个是匹配开头的字符串,例如
/^class/g
classroom
这个是匹配输入字符串的结尾
/room$/g
classroom
这个是匹配前面的字符零次或多次,也就是计算理论中的星闭包 *
/lu*ck/g
luck,luuuuuck,lck
这个是匹配前面的字符一次或多次,也就是计算理论中的加法闭包或叫正闭包 +
/go+gle/g
google,gooogle,goooooogle
这个是匹配前面的字符零次或一次.
/apples?/g
apples,apple
这个是匹配确定的n次
/hello{3}/g
hellooo,hello,helloo
这个是至少匹配n次,也可以看作一种区间形式
/hello{2,}/g
hellooo,helloo,helloo
这个是最少匹配n次且最多m次,可以理解为区间
/hello{2,4}/g
hellooo,helloo,hello,hell,helloooo