Web开发

首页 » 常识 » 常识 » 如何彻底搞懂面向Web开发者的正则表达式
TUhjnbcbe - 2023/3/25 19:39:00

对于正则表达式,开发者如何跳出云里雾里的谜团?

作者

ChrisAchard

译者

弯月,责编

郭芮

以下为译文:

正则表达式能在字符串中查找匹配特定模式的子字符串。

在JavaScript中,可以通过斜线//来创建,也可以通过newRegExp()来创建,然后就能使用match、test、replace等方法。你可以事先定义正则表达式,也可以在调用方法时随时定义。

每次匹配一个字符,将多个字符放到方括号[]中可以匹配多个匹配的字符。

用横线-匹配字符范围。

在正则表达式末尾添加额外的标记来修改匹配器的行为。

JavaScript支持如下标记:

i=不区分大小写m=多行匹配g=全局匹配(查找所有匹配,而不是仅查找一个)

在模式开头使用箭头^表示“字符串开头”。

在模式末尾使用美元符号$表示“字符串结尾”。

将多个模式放在一起以匹配更长的字符串。

使用通配符和特殊的转义字符来匹配字符类。

.=除了换行之外的任何字符。

\d=数字\D=非数字\s=空白\S=非空白\n=新行

用数量修饰符来匹配特定数量的字符。

*=零个或多个+=一个或多个?=零个或一个{3}=正好3个{2,4}=2,3,或4个{2,}=2或多个

使用括号()来分组。

match会返回完整的匹配,外加每个分组,除非你使用了g标记。

在括号()内使用管道符号

来表示分组的匹配内容。

=或者

要匹配特殊字符,需要用反斜杠\将其转义。

JS正则表达式中的特殊字符包括:^$\.*+?()[]{}

所以,要想匹配星号,需要使用:

\*而不能仅使用*

要想匹配除了特定字符之外的任意字符,可以在方括号内使用^。

这意味着^有两种含义,可能会造成混淆。

当它出现在正则表达式开头时,它表示“字符串开头;出现在方括号内时,表示“不是这些字符串”。

正则表示可以用来查找并匹配各种东西,比如URL和文件名。

但是!对于非常复杂的任务,使用正则表达式时一定要小心,比如分析电子邮件(你很容易就会弄得一团糟),或者分析HTML(HTML不是正规的语言,所以没办法完全使用正则表达式来解析)。

当然,正则表达式还有更多内容,如懒惰vs贪婪,前向,捕获等。

但是,对于绝大多数Web开发者来说,掌握这些最基本的组成部分就够了。

原文:

1
查看完整版本: 如何彻底搞懂面向Web开发者的正则表达式