Javascript 在IE11中测试正则表达式编译的一个特性

Javascript 在IE11中测试正则表达式编译的一个特性,javascript,regex,unicode-escapes,browser-feature-detection,Javascript,Regex,Unicode Escapes,Browser Feature Detection,我想测试以避免在不支持正则表达式的浏览器(例如IE11)中编译损坏的正则表达式。理想情况下,我想写一些大致如下的内容: if (regex supports unicode property escapes) { return /\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F/gu; } else { return /somereplacementregex/; }

我想测试以避免在不支持正则表达式的浏览器(例如IE11)中编译损坏的正则表达式。理想情况下,我想写一些大致如下的内容:

if (regex supports unicode property escapes) {
    return /\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F/gu;
} else {
    return /somereplacementregex/;
}


这可能吗?我知道有一些特性检测API,但据我所知,没有一个用于正则表达式。或者,如果有另一种编写方法不会破坏编译,并且会抛出一个我可以捕捉到的错误,那么这也将非常好。

如果您对
函数或
eval
之类的内容感到满意,并且使用
try/catch
之类的方法应该可以:

try { 
  return new Function('', 'return /\\p{Script=Greek}/u;')() 
} catch(e) { return /asdf/g;}

注意您必须转义
\\p
,因为它现在包含在字符串中。在IE11上测试了这一点,它成功了(没有出现致命的解析错误)

这在Firefox或Safari中有效;在IE11中应该可以:

let regex = /somereplacementregex/;
try
{
    regex = new RegExp ("\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation}|\\p{Emoji}\\uFE0F", "gu");
}
catch (e) { }
//
// use regex...
console.log (regex);

最后在响应中使用此选项以避免函数/eval,并且可以确认它在IE中有效。感谢您的回复。