Espressões regulares

11 respostas
M

Pessoal,

estou precisando aplicar uma expressão regular em um texto, porém esse texto só pode aceitar caracteres normal [A-Za-z] e espaços em branco, alguém pode me ajudar como ficaria?

11 Respostas

marcos1EM

Em qual linguagem ? java ou javaScript por exemplo

E

Se é só isso mesmo
seria algo como:

“[A-Za-z ]+”

É “só isso mermo” ?

Adelar

Se quiser dar uma olhada, tem este post do guj que achei hoje sobre expressões regulares http://www.guj.com.br/posts/list/0/103520.java#1099367… tem uns links muito bons.

Att.

robertoMoraes

Expressões Regulares
http://guia-er.sourceforge.net/

Validador de Expressões Regulares
http://www.piazinho.com.br/exemplos.html#11

M

oi entanglement,

realmente é só isso que eu preciso, mas devo está fazendo algo errado, pois não funcionou.
O código está assim:

public void textValidation(JTextField text, int size) {
		if (text.getText().length() > size) {
			text.setText(text.getText().substring(0, size));
		}

		if (!text.getText().matches("[A-Za-z]+")) {
			String s = text.getText();
			//Normalizer.normalize(s, Normalizer.Form.NFKC).replaceAll("[^\\p{ASCII}]", "");
			s = s.replaceAll("\\d", "");
			s = s.replaceAll("\\W", "");
			text.setText(s);
		}
E

Você não fez um copy & paste da minha expressão regular. Você só a copiou sem notar que tinha um espaço depois do “[A-Za-z ]”. Faça um copy & paste e tente novamente.

M

oi entanglement,
fiz o copy & paste e realmente funcionou, só que está ocorrendo uma outra coisa. Assim, quando começo a digitar qualquer nome e coloco o espaço, funciona só que quando eu coloco uma letra ascentuada ele apaga a letra e concatena a palavra toda. Ex. se eu escrevo: “A Casa”, fica certo, porém se eu escrevo “A casa” é ele concatena e fica “Acasa”. Sabe me dizer o porque disso?

E

É porque você trocou todos os caracteres que não podem entrar em palavras ("\W") por vazio. Como um espaço também entra nessa categoria de caracteres que não são palavras, ele foi trocado.

M

e como eu resolveria isso?
se eu tirar o \w ele aceita caracteres acentuados e a aplicação não deve aceitar.

E

O contrário de “[A-Za-z ]” é “[^A-Za-z ]”. No seu caso, use:

s = s.replaceAll("[^A-Za-z ]", "");

em vez de

s = s.replaceAll("\\d", "");  
 s = s.replaceAll("\\W", "");

Recomendo que você leia sobre expressões regulares antes de tentar usá-las.

M

Valeu entanglement, funcionou!
obrigado!!

Criado 18 de agosto de 2010
Ultima resposta 19 de ago. de 2010
Respostas 11
Participantes 5