Sto provando a convalidare un modulo utilizzando un'espressione regolare trovata qui http://regexlib.com/. Quello che sto cercando di fare è filtrare tutti i caratteri tranne a-z, virgole e apostrofi. Se utilizzo questo codice:Escaping apostrofi in regex?
<cfinput name="FirstName" type="text" class="fieldwidth" maxlength="90" required="yes" validateat="onsubmit,onserver" message="Please ensure you give your First Name and it does not contain any special characters except hyphens or apostrophes." validate="regular_expression" pattern="^([a-zA-Z'-]+)$" />
Viene visualizzato il seguente errore: Non corrispondente [] nell'espressione. Ho capito questo si riferisce a l'apostrofo perché funziona se uso questo codice (ma non consente apostrofi):
<cfinput name="FirstName" type="text" class="fieldwidth" maxlength="90" required="yes" validateat="onsubmit,onserver" message="Please ensure you give your First Name and it does not contain any special characters except hyphens or apostrophes." validate="regular_expression" pattern="^([a-zA-Z-]+)$" />
Quindi mi chiedo c'è qualche modo speciale per sfuggire apostrofi quando si utilizzano le espressioni regolari?
EDIT
Penso di aver trovato dove il problema è causato (grazie a Xanatos), non è sicuro come risolvere il problema. Fondamentalmente CF sta generando un campo nascosto per convalidare il campo come segue:
<input type='hidden' name='FirstName_CFFORMREGEX' value='^([a-zA-Z'-]+)$'>
perché utilizza singoli apostrofi anziché apici intorno al valore, interpreta l'apostrofo come la fine del valore.
L'apostrofo è un carattere speciale e deve essere scappato dal testo standard anteponendo con ' \ ', prova pattern = "^ ([a-zA-Z \' -] +) $" HTH – John
@John Sei sicuro? E cosa significa? Come viene utilizzato nella "lingua" del Regex? – xanatos
Dico "prova" quindi non ne sono sicuro, l'espressione regolare ha molti aromi e la sostituzione delle espressioni taggate è in realtà assente dal mio programma Word 2002. – John