2016-04-30 48 views
9

HTML5 form doğrulaması için regex pattern eşleştirmesini kullanıyorum. Firefox'un en son sürümü bana bir hata veriyor. Sadece Firefox 46'da bunu görmeye başladım. Bunun daha önceki Firefox sürümlerinde bir sorun olduğunu düşünmüyorum. Firefox hatası: Desen geçerli bir regexp olmadığından girişi kontrol edilemiyor: normal ifade içinde geçersiz kimlik kaçışı

Unable to check <input pattern='[\@\%]'> because the pattern is not a valid regexp: invalid identity escape in regular expression

bu çok basit bir test durumu Neden Olduğu:

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="UTF-8"> 
    </head> 
    <form> 
    <input pattern="[\@\%]"> 
    </form> 
</html> 

Neden bir hata olarak kabul bu karakterleri kaçıyor? Her zaman bir sayı veya harf olmayan normal ifadelerimde her şeyden kaçtım. Firefox'un bu sürümü dışında bu tür kaçış karakterinden hiçbir şey şikayet etmedim. Normal ifadeyi öğrendiğimde, bir sayı veya harf olmayan her şeyin özel bir anlamı olabileceği söylendi. Şimdi olmasa bile, gelecek bir versiyonda olabilir, bu yüzden onlardan kaçmak daha iyidir. Bu doğru değil mi?

Firefox için kaçmamam gereken karakterlerin bir listesi var mı?

+0

_sidenote_: -: //www.fxsitecompat onlar herhangi bir özel anlamı – rock321987

cevap

4

Bu aşağıdaki değişikliği nedeniyle: Birisi zaten söyledi Bug 1227906 - HTML pattern attribute should set u flag for regular expressions

olarak, bu karakterleri kaçmayı yok. Sadece kullanın:

<input pattern="[@%]"> 
+0

[site uyumluluk doc] (https Yayınlanan yok gibi karakter sınıfında bu karakterleri kaçmayı gerek yoktur. Bunun için com/en-CA/docs/2016/input-pattern-now-sets-u-flag-için-düzenli ifadeler /). –

+0

[İlgili github sorunu] (https://github.com/whatwg/html/issues/439) da şimdi yeniden açıldı. – sideshowbarker

+0

Unicode regex modunda bu karakterlerden neden kaçamıyorsunuz? –