Um dia estava precisando realizar uma validação de entrada de dados em um campo de texto. Nesse campo de texto só seria permitido entrar valores nos seguintes padrões:
aaaaa
AAAA
aaa111
AAA111
AAaa111
áááÁÁÁÁ
a-a-a
_i-i-i-i
onde:
a: representa letra qualquer que pode ir de a - z
A: representa letra qualquer que pode ir de A - Z
1: número qualquer que pode ir de 0 - 9
á: representa letra acentuada qualquer que pode ir de à-ú
Á: representa letra acentuada qualquer que pode ir de À-Ú
_ e -: representam os caracteres _ e -
Não queria usar nenhum plugin jquery. Queria usar uma regex pois, queria algo performático. Realizando pesquisas atrás da regex, achei a solução no endereço (para quem estiver lendo esse post, recomendo olhar esse link).
http://aurelio.net/regex/guia/acentuacao.html#5_5
Analisando o conteúdo do link, montei minha regex, segue abaixo:
/^([a-zA-Zà-úÀ-Ú0-9]|-|_|\s)+$/
onde:
^ = Demarca início da linha.
[a-zA-Zà-úÀ-Ú0-9] = Representa uma letra qualquer que pode estar no intervalo de a-z ou, de A-Z, ou de à-ú, ou de À-Ú, ou um número que pode estar entre 0 ou 9.
| = Representa a operação lógica "or".
- e _ = Representam os caracteres - (hífen) e _ (underline), respectivamente.
\s = Encontra um caracter de espaço (whitespace).
+ = Representa 1 ou mais ocorrências de alguma coisa.
$ = Demarca fim de linha.
Importante: Para entender uma regex é necessário avaliar as partes em alguns momentos mas, em outros é necessário entender o todo.
Se, esta é sua primeira vez aqui no blog ou, é seu primeiro contato com regex, recomendo você dar uma olhadinha em outros posts:
http://precisoestudarsempre.blogspot.com.br/2013/03/mascara-para-valores-decimais-negativos.html
http://precisoestudarsempre.blogspot.com.br/2013/05/regex-para-datas-mascara-para-datas.html
http://precisoestudarsempre.blogspot.com.br/2013/06/regex-para-horas-mascara-para-horas.html
Recomendo também você dar uma olhadinha nesse link:
http://www.w3schools.com/jsref/jsref_obj_regexp.asp
quinta-feira, 1 de agosto de 2013
Regex para aceitar acentos
Assinar:
Postar comentários (Atom)
9 comentários:
Ajudou muito! Obrigado.
Só uma observação: Não é preciso colocar [a-zA-Z], se vc por [A-z] ele já aceita maiusculas e minusculas. O msm serve para os acentuados: [A-zÀ-ú].
Poxa que ótimo. Obrigado pela observação. Sempre que tiver mais observações, sinta-se livres para realizá-las.
Discordo do Adm pois Regex é baseado na tabela ASCII e assim com [A-z] ele vai pegar também outros caracteres como o underline _
Verdade, Alexandre está certo !! O teste foi feito e o _ foi pego !
/[à-ü]/gi é o ideal, pois há também o trema, comum em textos como "lingüiça", de textos em português antigo, e palavras estrangeiras, como "Müller".
Lembrando que o parâmetro "i" já se encaixa como Insensitive.
Ótima observação e contribuição Rodrigo Paulino. Sempre que quiser contribuir com o Preciso Estudar Sempre, fique a vontade.
Muito massa. mandou bem demais, ajudou muuito!
Essa dica foi valiosissíma:
"Só uma observação: Não é preciso colocar [a-zA-Z], se vc por [A-z] ele já aceita maiusculas e minusculas. O msm serve para os acentuados: [A-zÀ-ú]."
Bastante útil, valeu mesmo!
Postar um comentário