2016-04-30 29 views
9

Sto utilizzando la corrispondenza del modello di espressioni regolari per la convalida del modulo HTML5. L'ultima versione di Firefox mi dà un errore. Ho iniziato a vederlo solo in Firefox 46. Non penso che questo fosse un problema nelle precedenti versioni di Firefox.Errore di Firefox: impossibile controllare l'input perché il pattern non è un'espressione regolare valida: escape di identità non valido nell'espressione regolare

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

causati da questo molto semplice banco di prova:

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

Perché sfuggire questi personaggi considerati un errore? Sono sempre sfuggito a tutto nelle mie espressioni regolari che non è un numero o una lettera. Non ho mai avuto nulla di cui lamentarsi questo tipo di carattere di escape tranne questa versione di Firefox.

Quando ho imparato regex, mi è stato detto che tutto ciò che non era un numero o una lettera poteva avere un significato speciale. Anche se non lo fosse ora, potrebbe essere in una versione futura, quindi è meglio fuggire da loro. Non è vero?

Esiste una lista di caratteri che non dovrei sfuggire per Firefox?

+0

_sidenote_: - non c'è bisogno di fuggire quei personaggi in classe del personaggio in quanto non hanno alcun significato speciale – rock321987

risposta

4

Ciò è dovuto al seguente modifica: Bug 1227906 - HTML pattern attribute should set u flag for regular expressions

Come qualcuno ha già detto, non c'è bisogno di fuggire quei personaggi. Basta usare:

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

Pubblicato il [sito compatibilità doc] (https: //www.fxsitecompat. com/en-CA/docs/2016/input-pattern-now-sets-u-flag-for-regular-expressions /) per questo. –

+0

Anche il [problema github correlato] (https://github.com/whatwg/html/issues/439) è stato riaperto. – sideshowbarker

+0

Qualche idea sul perché non puoi sfuggire a quei personaggi nella modalità regex Unicode? –