【发布时间】:2021-11-10 21:24:00
【问题描述】:
以下模式在 Chrome 和 FF 中运行良好,但在 Microsoft Edge 和 Safari 中不适用。使其在这些浏览器中工作的解决方法是什么?
var pattern = new RegExp('(?<!\\p{L}\\p{M}*|[\\p{N}_-])(?:' + keywords.map(escapeRegExp).join('|') + ')(?![\\p{L}\\p{N}_-])', 'igu');
编辑:
我创建了一个https://jsfiddle.net/seb_london/64a9m0L1/17/ - 在文本区域中输入 php、java 或 .net。关键字将在 Chrome 中突出显示,但在 Microsoft Edge 42.17134.1.0 中不会突出显示,我相信这与 Safari 中的问题相同。
【问题讨论】:
-
如果你想要完全相同的功能,你不会喜欢它。这里的共识通常是使用一些变通方法。比如说,空白边界。
-
什么不起作用。我在 EDGE 和 var pattern = new RegExp('(?
-
谢谢。这是我与github.com/lonekorean/highlight-within-textarea 插件一起使用的正则表达式,但我无法将其作为代码sn-p 来显示它是如何工作的。使用这个插件/正则表达式,我可以在 Chrome 和 FF 中突出显示单词,但在 Edge 和 Safari 中则不能。
-
您可以尝试使用更简单的正则表达式来检查插件是否正常工作吗?您正在使用 PHP 支持的“\p{L}”、“\p{M}”,但可能不是来自任何语言的任何类型的字母,例如 PHP。尝试将其替换为“\s”(空格)。尝试 new RegExp('(?
-
您的新 ReExp 不起作用(即使在 Chrome 中)。但我明白你的意思,我会考虑为 JS 简化它。感谢您的帮助。
标签: javascript regex safari microsoft-edge regex-lookarounds