首页 > 解决方案 > Firefox 中的正则表达式组(反向前瞻)无效

问题描述

我有一个相当混乱的正则表达式来匹配句子中的单词和标点符号

var sentence = "Exclamation! Question? Full stop. Ellipsis...";
var words = sentence.toLowerCase().match(/\w+(?:'\w+)*|(?<![!?.])[!?.]/g);
console.log(words);

在 Chrome 中,这会输出:

[ "exclamation", "!", "question", "?", "full", "stop", ".", "ellipsis", "." ]

在 Firefox 中,此表达式会导致错误,这似乎是由于反向前瞻。

我想知道是否有可能以适用于 Firefox 的方式重写这个表达式,或者是否有任何其他方式可以实现这一点?

标签: javascriptregexfirefox

解决方案


您可以改用积极的前瞻

\w+(?:'\w+)*|[!?.](?![!?.])

var sentence = "Exclamation! Question? Full stop. Ellipsis...";
var words = sentence.toLowerCase().match(/\w+(?:'\w+)*|[!?.](?![!?.])/g);
console.log(words);


推荐阅读