javascript - 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 的方式重写这个表达式,或者是否有任何其他方式可以实现这一点?
解决方案
您可以改用积极的前瞻
\w+(?:'\w+)*|[!?.](?![!?.])
var sentence = "Exclamation! Question? Full stop. Ellipsis...";
var words = sentence.toLowerCase().match(/\w+(?:'\w+)*|[!?.](?![!?.])/g);
console.log(words);
推荐阅读
- ios - 如何在 UIviewcontroller 上使用 UItabbar?
- python - Spyder3 在 Ubuntu 16.04 中崩溃
- c# - Xamarin Form [Android] 中的嵌套 ListView 崩溃
- css - 从数据库中显示网页中的数据
- c - ld.exe: 找不到入口符号 _start
- javascript - 正则表达式 - 从正则表达式结果中删除带有正则表达式的字符串
- laravel - VueRouter 没有按预期加载组件
- java - 如何在 ProcessImage 中使用 DigitalIn - Modbus
- r - 以下 R 代码的工作?需要说明
- webdriver - 量角器安装错误