IE11'de normal ifade derlemesinin bir özelliğini test etme
Unicode Regex Özellik Kaçışlarını , onu desteklemeyen tarayıcılarda (örneğin IE11) bozuk bir normal ifadeyi derlemekten kaçınmak için test etmek istiyorum . İdeal olarak, şu satırlar boyunca bir şeyler yazmak istiyorum:
if (regex supports unicode property escapes) {
return /\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F/gu;
} else {
return /somereplacementregex/;
}
Bu hiç mümkün mü? Bazı özellik algılama API'leri olduğunu biliyorum, ancak bildiğim kadarıyla regex için bir API yok. Alternatif olarak, bunu yazmanın derlemeyi bozmayacak ve bir hata atacak başka bir yolu varsa, o zaman bu da harika olur.
Yanıtlar
Bu, Firefox veya Safari'de çalışır; IE11'de uygun olmalı:
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);
Function
Veya gibi bir şey konusunda kendinizi rahat hissediyorsanız eval
ve try/catch
... bunun gibi bir şey çalışmalıdır:
try {
return new Function('', 'return /\\p{Script=Greek}/u;')()
} catch(e) { return /asdf/g;}
\\p
Artık bir dizede bulunduğu için 'den kaçmanız gerektiğini unutmayın . Bunu IE11'de test etti ve işe yaradı (önemli bir ayrıştırma hatası olmadan geri döndü)