a piece of JavaScript code有几个使用\b
匹配字边界的正则表达式。它们在Unicode输入上无法正常工作。他们的工作或多或少是这样的:
',.,.Michał /#@$^Øystein(*()'.match(/\b.+?\b/g) // => ["Micha", "ł /#@$^Ø", "ystein"]
我希望上面的表达式返回[ "Michał", " /#@$^", "Øystein" ]
。
\b
中的表达式实际上比.+?
更复杂,并且其中一些是生成的,因此更改它们非常棘手。理想情况下,我希望保持这些表达式不变,并以符合Unicode的方式将\b
替换为与零宽度字边界匹配的内容。
有可能吗?如果是,我该怎么办?如果不是,我该怎么做才能对\b
内的表达式进行最少的更改?
我希望ES6可以提供帮助,但不会 - \b
的行为在那里没有改变。