Valores Min e Max Regex

2 respostas
rafa.santos

Bom Dia pessoal,
Estou estudando regex para aplicar em um projeto e li várias documentações já, estou com uma dúvida que creio que Vcs possam me ajudar.
Tenho a seguinte regex: (\d{3,5}\,\d{2}), teoricamente não era para aceitar números que vão de 3 a 5 dígitos antes da vírgula e 2 depois da vírgula ???
Exemplo: 100,50 - Válido, 1000,50 - Válido, 10000,50 - Válido, 10,50 - Inválido, 100000,50 - Inválido… Quando ele não atinge o valor MIN de digitos (3) dá false no teste, mas quando estoura os 5 (MAX) continua dando true… não entendi…
Segue o código:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class teste {

public static void main(String[] args) {		
	String data = "999999,55"; 
	Pattern pattern = Pattern.compile("(\\d{3,5}\\,\\d{2})");
	Matcher matcher = pattern.matcher(data);
	if(matcher.find()){
		System.out.println("valido");
	} else {
		System.out.println("invalido");
	}				  
}

}

Obrigado,

2 Respostas

T

“find” procura uma expressão regular, mas se sobrar alguma coisa (tanto à esquerda quanto à direita) ele não reclama. Acho que para o que você quer, você precisa usar matches, não find.

http://java.sun.com/javase/6/docs/api/java/util/regex/Matcher.html

rafa.santos

Mto obrigado thingol, funcionou perfeitamente, extamente como explicou.
Valeu mesmo,
Abraço

Criado 6 de agosto de 2009
Ultima resposta 6 de ago. de 2009
Respostas 2
Participantes 2