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

2020-05-10 20:00:16王振洲
, 0-9, 和_.

/bpb/g

/bcatb/g

还有一个非字边界锚 B

顾名思义,它匹配除字边界之外的所有内容。

/Bp/g

/BpB/g

小提示

^…$b…b是常见的模式,您几乎总是需要这 2 个防止意外匹配。

10.4 例子

尾部空格

/s+$/gm

markdown 标题

/^## /gm

没有锚点:

/## /gm

11 零宽断言(lookaround)

零宽断言可用于验证条件,而不匹配任何文本。

你只能看,不能动。

先行断言(lookhead) 正向(?=…) 负向(?!…) 先行断言(lookbehind) 正向(?<=…) 负向(?<!…)

11.1 先行断言(lookhead)

正向(positive)

/_(?=[aeiou])/g

注意后面的字符是如何不匹配的。可以通过正面前看得到证实。

/(.+)_(?=[aeiou])(?=1)/g

正则引擎在 _ 使用了 (?=[aeiou])(?=1) 进行检查。

/(?=.*#).*/g

负向(Negative)

/_(?![aeiou])/g

/^(?!.*#).*$/g

如果没有锚点,将匹配每个示例中没有#的部分。

负向的先行断言常常用于防止匹配特定短语。

/foo(?!bar)/g