Javascript正则表达式边界的细微差别?

时间:2017-02-15 00:50:22

标签: javascript regex

测试字符串:

AS / ANZ 1234

正则表达式:

\bAS\b

匹配:

AS

如果\ b是简写:

(^\w|\w$|\W\w|\w\W)

为什么选择正则表达式:

(^\w|\w$|\W\w|\w\W)AS(^\w|\w$|\W\w|\w\W)

找不到匹配项?

更新(根据评论中的问题) 我在提问之前试图解决自己的问题。在https://regex101.com/

测试正则表达式

我进入了:

\bAS\b

说明(在右侧)表示它是:

的简写
(^\w|\w$|\W\w|\w\W)AS(^\w|\w$|\W\w|\w\W)

当然,我可能会错误地解释说明。

1 个答案:

答案 0 :(得分:1)

字边界的定义没有细微差别。它完全符合documentation所说的。它是零宽度。因此,无法使用任何非零宽度的regexp构造模拟或模仿它,如您的示例所示。在您的示例中:

(^\w|\w$|\W\w|\w\W)AS(^\w|\w$|\W\w|\w\W)

匹配" AS / ANZ 1234",初始^\w将"吃" " A",使其无法匹配" AS"。以下\w\W将" eat" " S"也让它无法与#34; S"匹配。