Dúvidas com regex

5 respostas
S

Olá pessoal, esta é a minha primeira postagem, peço desculpas se for coisa básica.
Bom, estou tentando fazer uma validação, simples, de nome, com regex.
O metodo matches(), retorna um boolean.
Porém neste boolean eu só obtenho false.

Aqui vai o código:
public boolean setNome(String nome) {
		Pattern validando = Pattern.compile("[^[:digit:]]");
		Matcher casando = validando.matcher(nome);
		boolean resultado = casando.matches();
		if(resultado){
			this.nome = nome;			
		}
		return resultado;
	}

Se alguém puder ajudar.

Valeu moçada!!

5 Respostas

R

que tipo de validação para nome era pra dar true? ou seja, qual a validação para o nome ser válido?

davidbuzatto

Não entendi direito o que você quer, mas me parece que quer validar uma String que não contenha números. É isso?
O metacaractere \D significa “não dígito”.
A classe String possui um método chamado matches, ficando mais simples do que fazer a forma que você está fazendo.

Exemplos:// metacaractere \D. Note que há a necessidade de escapar a barra invertida. // '+' significa um ou mais. Se quiser zero ou mais, troque + por * System.out.println( "david buzatto".matches( "\D+" ) ); System.out.println( "árvore".matches( "\D+" ) ); System.out.println( "emergência 911".matches( "\D+" ) );
[]´s

S

rjbcordeiro, a validação é a que o amigo david disse. Pra não conter números.

Não sabia desse método da classe String.

Então desta maneira não é necessário o uso do regex, correto?

abraços…

davidbuzatto

Claro que é necessário. O parâmetro passado ao método matches é uma expressão regular.

[]´s

R

tenta isto aqui:

//ou assim
Pattern validando = Pattern.compile("[^0-9]*");

//ou assim
 Pattern validando = Pattern.compile("[\D]*");
Criado 9 de novembro de 2010
Ultima resposta 11 de nov. de 2010
Respostas 5
Participantes 3