segunda-feira, 18 de outubro de 2010

Apenas letras com Regex e idioma brasileiro....

As vezes surge a necessidade(aka pedidos de cliente) de permitir que o usuário digita apenas letras em algum textarea. Para quem conhece expressão regular, sabe que vai ser um trabalho fácil, né? Bom, não exatamente. A lista para pegar apenas letras seria: [a-zA-Z]. A expressão regular com lista, pega os caracteres em ordem do ASCII, o problema é que entre a e z só ficam as letras comuns, sem acentos. Ou seja, se você estiver fazendo um site em inglês, provavelmente poderá usar a opção acima em Javascript, mas um em portugês =/.
Algumas linguagens aceitam expressão regular com o padrão POSIX, com ele seria possivel escrever [:alpha:] e magicamente TODAS as letras estariam incluidas, inclusive as acentuadas, mas em javascript não é possível.
Para resolver esse problema eu decidi dar uma pesquisada em funções que transformar o char em seu respectivo "int" do ASCII. Descobri que as letras acentuadas ficam de 225 a 250. Logo, se ao transformar "a letra em número" ela ficar for maior ou igual a 225 e menor ou igual a 250 então ela é uma letra válida e não um outro caracter qualquer.
Pronto, o grande problema desse caso foi resolvido =D. Para ver como fiz com o http://xregexp.com(uma "lib" de regex muito boa para js), clique aqui ;)

0 comentários:

Postar um comentário