RegEx para encontrar dois ou mais caracteres consecutivos


103

Preciso determinar se uma string contém dois ou mais caracteres alfa consecutivos. Dois ou mais [a-zA-Z]lado a lado. Exemplo:

"ab" -> valid
"a1" -> invalid
"a b" -> invalid
"a"-> invalid
"a ab" -> valid
"11" -> invalid

Respostas:


211

Isso deve resolver o problema:

[a-zA-Z]{2,}

Possível {2}sem a vírgula também deve funcionar, certo?
Alexander Mills

18
Alexandre, apenas para esclarecer algumas coisas: {2} significa que o comprimento deve ser 2. {2,} significa que o comprimento da expressão pode ser => 2
Shmarkus

1

Pessoalmente (como nooby) eu usei:

[0-9][0-9]+.

Mas o do Simon é muito melhor! = D


0

[a-zA-Z] {2,} não funciona com dois ou mais caracteres consecutivos idênticos. Para fazer isso, você deve capturar qualquer personagem e, em seguida, repetir a captura assim:

(.) \ 1

O parêntese captura o. que representa qualquer caractere e \ 1 é o resultado da captura - basicamente procurando uma repetição consecutiva daquele caractere. Se você deseja ser específico sobre quais caracteres você deseja encontrar são idênticos consecutivos, basta substituir "qualquer caractere" por uma classe de caractere ...

([a-zA-Z]) \ 1

Encontra uma letra maiúscula ou minúscula repetitiva consecutiva. Corresponde a "abbc123" e não a "abc1223". Para permitir um espaço entre eles (ou seja, um ab), inclua um espaço opcional na regex entre o caractere capturado e a repetição ...

([az] AZ]) \ s? \ 1


Tenho certeza de que você entendeu mal a pergunta, pois se trata de duas letras. Sua regex é para um caso diferente: duas letras semelhantes!
csabinho de 20/11/1919

-4

Tenho certeza de que você pode apenas usar [Az] em vez de [a-zA-Z] para obter caracteres alfa minúsculos e maiúsculos http://www.w3schools.com/jsref/jsref_obj_regexp.asp


22
-1: Este é outro exemplo maravilhoso de porque você nunca deve usar o w3schools como referência ou educação. [A-z]corresponde a mais do que letras. Especificamente, ele também corresponde a colchetes, barras invertidas, circunflexos, sublinhados e crostas.
Tim Pietzcker

Na verdade, o que @TimPietzcker diz está correto; os caracteres que ele mencionou estão entre Ze a, portanto, seriam (erroneamente) incluídos em tal padrão. Eu apoio a recomendação: não use w3schools! Ele contém muitas informações sutilmente ruins como essa.
Andrew Barber

5
Ai primeiro zing em Stack, dói mais do que eu pensava. Então, ao incluir Az, ele corresponde a tudo de [AZ um monte de coisas que eu não quero e az] todos os charcodes entre maiúsculas e não maiúsculas? danshort.com/ASCIImap
Kevin

então posso dizer algo como [! - +]? Também existe uma maneira de acessar o charcode dentro de uma regex algo como [65-90] que seria o mesmo que [AZ]?
Kevin

@Kevin [65-90]corresponderá a 5- 9(que também inclui 6) e 0!
csabinho
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.