专门为初学者编写的正则表达式入门教程

2020-05-10 20:00:16王振洲

使用管道符号 | 把多个短语之间分开

/foo|bar|baz/g

匹配 foo, bar, 和 baz 中的一个。

如果正则中只有一部分需要“交替”,可以使用组进行包裹,捕获组和非捕获组都可以。

/Try (foo|bar|baz)/g

Try 后面跟着 foo, bar, 和 baz 中的一个。

匹配 100-250 中间的数字:

/1dd|2[0-4]d|250/g

这个可以使用 Regex Numeric Range Generator 工具生成。

例子

十六进制颜色

让我们改进一下之前十六进制颜色匹配的例子。

/#[0-9A-F]{6}|[0-9A-F]{3}

[0-9A-F]{6} 要放在[0-9A-F]{3}的前面,这一点非常重要。否则:

/#([0-9A-F]{3}|[0-9A-F]{6})/g

小提示

正则表达式引擎是从左边到右边的尝试交替的。

罗马数字

/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/g

9 修饰符

修饰符允许我们把正则表达式分成不同的 "模式"。

修饰符是 /pattern/ 后面的部分。

不同引擎支持不同的修饰符。在这里我们只讨论最常见修饰符。

9.1 全局修饰符(g)

到现在为止,所有的例子都设置了全局修饰符。如果不启用全局修饰符,正则表达式匹配第一个以后将不再匹配其他任何字符。

/[aeiou]/g

/[aeiou]/

9.2 不区分大小写修饰符(i)

顾名思义,启用这个修饰符会使正则在匹配时不区分大小写。

/#[0-9A-F]{6}/i

/#[0-9A-F]{6}/

/#[0-9A-Fa-f]{6}/