Eu preciso testar um campo de input ( ) contra este regex:
[^'"]+
Obviamente, essa não é uma tarefa fácil, pois não posso usar "
dentro do atributo. O uso da entidade” não parece funcionar, pois é interpretado literalmente pelo mecanismo regex.
Como posso fazer isso?
O regex do atributo HTML5 @pattern é baseado em JavaScript regex, portanto, você pode usar notação hexadecimal ou notação unicode para esse caractere como faria em JavaScript:
" = \x22 OR \u0022 ' = \x27 OR \u0027
Para que você possa usar facilmente
pattern="[^'\x22]+"
TADA! Nenhuma biblioteca de JavaScript envolvida! 😉
Tente usar uma estrutura js como JQuery ou PrototypeJS
então você pode dizer
onchange=(function() {...});
você pode seguir como usar o regex no jQuery através deste thread: Validação do campo de expressão regular em jQuery
se você tem um navegador HTML5, você pode escrever
e você precisa se preparar para não conseguir navegadores com Modernizer com alguns como este
if(!Modernizr.input.pattern) { var input = document.getElementById("ipt_my_field"); input.addEvent('onblur', function(ip){ if(ip.value.match(/[^'"]+/)) { // is a good } else { // is a bad } }); }