一尘不染

javascript中的utf-8字边界正则表达式

javascript

在JavaScript中:

"ab abc cab ab ab".replace(/\bab\b/g, "AB");

正确地给我:

"AB abc cab AB AB"

当我使用utf-8字符时:

"αβ αβγ γαβ αβ αβ".replace(/\bαβ\b/g, "AB");

在字边界运营商似乎没有工作时:

"αβ αβγ γαβ αβ αβ"

这个问题有方法解决吗?


阅读 240

收藏
2020-05-01

共1个答案

一尘不染

仅当一个单词字符之前或之后没有另一个单词字符(因此.\b.等于\W\w\w\W)时,单词边界声明才匹配。并且\w定义为[A-Za-z0-9_]。因此\w与希腊字符不匹配。因此,您不能\b在这种情况下使用。

相反,您可以使用以下方法:

"αβ αβγ γαβ αβ αβ".replace(/(^|\s)αβ(?=\s|$)/g, "$1AB")
2020-05-01