[RESOLVIDO]Regex: Qual o pattern para não permitir um caracter especifico repita em sequênci

Boa tarde.

 Estou tentando montar um pattern para não permitir que dentro de uma string um ponto (.) repita em sequência, porém não consegui. Vou colocar abaixo parte do pattern que tentei, ele serve para validar um e-mail de acordo com o padrão da RFC, que entre outras coisas não permite que um ponto repita em sequência na parte local do e-mail. Eu tentei usar o apache commons que tem um EMailValidator, essa parte ele faz bem, mas tem uma outra que ele não obedece. Essa parte fala que no domínio não é permitido "_", por isso tive que fazer o meu.

parte que olha os caracteres :

([-!#\\$%'\\*\\+/=\\?\\^`\\{\\}\\|~\\w\\.)]*)

com o teste para verificar se o ponto repetiu

([-!#\\$%'\\*\\+/=\\?\\^`\\{\\}\\|~\\w\\.]?|[\\.\1])*

A validação completa:

^[!#\\$%'\\*\\+/=\\?\\^`\\{\\}\\|~\\w]((([-!#\\$%'\\*\\+/=\\?\\^`\\{\\}\\|~\\w\\.]?|[\\.\1])*)[!#\\$%'\\*\\+/=\\?\\^`\\{\\}\\|~\\w]@{1}(([a-zA-Z\\d\\-]{1,67})|([a-zA-Z\\d\\-]+\\.[a-zA-Z\\d\\-]{1,67}))\\.(([a-zA-Z]{2,4})(\\.[a-zA-Z]{2})?)$)

se alguém souber o esquema ai da uma forcinha :wink:

Cara, acho que fica mais fácil se você falar as regras da sua validação, os padrões que tem que ser seguidos, e a gente partir daí.

até onde entendi é um Pattern pra validar emails, e em algum lugar dele não podem haver pontos repetidos, é isso?

Oi,

Via programa:

[code]String texto = “…”;

Pattern lo_pattern = Pattern.compile(texto.charAt(0)+"{"+texto.length()+"}");

Matcher lo_matcher = lo_pattern.matcher(texto);

System.out.println(lo_matcher.find());[/code]

Tchauzin!

[quote=digaoneves]Cara, acho que fica mais fácil se você falar as regras da sua validação, os padrões que tem que ser seguidos, e a gente partir daí.

até onde entendi é um Pattern pra validar emails, e em algum lugar dele não podem haver pontos repetidos, é isso?[/quote]

sim, não pode repetir

por exemplo: o e-mail abaixo é inválido e justamente ele que quero impedir

Abc..123@example.com

Outros exemplos:

Valid email addresses

fonte:http://en.wikipedia.org/wiki/Email_address

não pode ser algo assim? “\.[^\.]?”

temos um ponto, a frente dele pode ou não vir um caractere, mas se vier, não pode ser um ponto.

vlw galera…

eu consegui, pelo menos para os casos mais usuais com o pattern abaixo… mas para aqueles e-mails bizarros que são válidos eu não consegui, mas isso deixa para lá

^[!#\\$%'\\*\\+/=\\?\\^`\\{\\}\\|~\\w]+(?:\\.[\\s-!#\\$%'\\*\\+/=\\?\\^`\\{\\}\\|~\\w]+)*@{1}(([a-zA-Z\\d\\-]{1,67})|([a-zA-Z\\d\\-]+\\.[a-zA-Z\\d\\-]{1,67}))\\.(([a-zA-Z]{2,4})(\\.[a-zA-Z]{2})?)$