我找到了一种使Edge JS解释器神秘崩溃的方法,但是我不知道为什么它坏了。在firefox和chrome中可以正常使用,但会完全炸毁Edge。
var foo = "Change or cancel my flight booking";
var match = "a";
foo.replace(new RegExp(match + "(?!([^<]+)?>)", 'gu'), '<span class="text-highlight">${match}</span>');
问题似乎出在正则表达式本身,因为如果我将其交换为空字符串,一切都会顺利进行。
真的不确定如何匹配正则表达式会破坏浏览器:(
编辑:为清楚起见,当在浏览器中通过html执行时,它将进入非响应状态。什么都无法点击,最终edge询问您是否要关闭页面,因为它没有响应。在开发者控制台中执行时,它不会显示返回值,并且永远不会执行任何其他语句。您可以继续输入,但是什么也没发生。
答案 0 :(得分:3)
如果我不带u
Unicode标志运行正则表达式,则在Edge(或任何其他主要浏览器)中都不会发生超时或崩溃:
var foo = "Change or cancel my flight booking";
var match = "a";
console.log(foo.replace(new RegExp(match + "(?!([^<]+)?>)", 'g'), '<span class="text-highlight">${match}</span>'));
正则表达式的ES2015 u
标志实际上与不同浏览器上的多个bugs相关联,例如HTML模式属性为broken in Edge。
因此,此问题似乎是与u
标志有关的类似但不同的错误,应在Microsoft Edge issue tracker上进行报告。