RegEx, aby znaleźć dwa lub więcej następujących po sobie znaków


103

Muszę określić, czy ciąg zawiera dwa lub więcej następujących po sobie znaków alfa. Dwa lub więcej [a-zA-Z]obok siebie. Przykład:

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

Odpowiedzi:


211

To powinno załatwić sprawę:

[a-zA-Z]{2,}

Możliwe {2}bez przecinka też powinno działać, prawda?
Alexander Mills,

18
Aleksandrze, żeby wyjaśnić kilka rzeczy: {2} oznacza, że ​​długość musi wynosić 2. {2,} oznacza, że ​​długość wyrażenia może wynosić => 2
Shmarkus

1

Personnaly (jako nooby) użyłem:

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

Ale ten od Simona jest o wiele lepszy! = D


1

[a-zA-Z] {2,} nie działa dla dwóch lub więcej identycznych następujących po sobie znaków. Aby to zrobić, powinieneś złapać dowolną postać, a następnie powtórzyć przechwytywanie w następujący sposób:

(.) \ 1

Nawias zawiera rozszerzenie. który reprezentuje dowolny znak, a \ 1 jest wynikiem przechwytywania - w zasadzie szukania kolejnego powtórzenia tego znaku. Jeśli chcesz dokładnie określić, które znaki, które chcesz znaleźć, są identyczne po sobie, po prostu zastąp „dowolny znak” klasą znaków ...

([a-zA-Z]) \ 1

Znajduje kolejne powtarzające się małe lub duże litery. Dopasowanie do „abbc123”, a nie „abc1223”. Aby uwzględnić spację między nimi (np. Ab), dołącz opcjonalną spację w wyrażeniu regularnym między przechwyconym znakiem a powtórzeniem ...

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


Jestem pewien, że nie zrozumiałeś pytania, ponieważ dotyczy ono dwóch liter. Twoje wyrażenie regularne dotyczy innego przypadku: dwie podobne litery!
csabinho

-4

Jestem prawie pewien, że możesz po prostu użyć [Az] zamiast [a-zA-Z], aby uzyskać małe i duże litery alfabetu http://www.w3schools.com/jsref/jsref_obj_regexp.asp


22
-1: To kolejny wspaniały przykład tego, dlaczego nigdy nie powinieneś używać w3schools jako odniesienia lub edukacji. [A-z]pasuje bardziej niż litery. W szczególności pasuje również do nawiasów kwadratowych, ukośników odwrotnych, daszków, podkreśleń i apostrofów.
Tim Pietzcker

Rzeczywiście, to, co mówi @TimPietzcker, jest poprawne; postacie, o których wspomniał, znajdują się pomiędzy, Za awięc zostałyby (błędnie) zawarte w takim wzorze. Popieram zalecenie: nie używaj w3schools! Zawiera wiele subtelnie złych informacji, takich jak ta.
Andrew Barber

5
Ojej pierwsze zing na Stack, kłuje bardziej niż myślałem. Więc dołączając Az, dopasowuje wszystko, od [AZ kilka rzeczy, których nie chcę, po] wszystkie znaki między dużymi a nie dużymi literami? danshort.com/ASCIImap
Kevin

więc mogę powiedzieć coś w rodzaju [! - +]? Czy istnieje również sposób na uzyskanie dostępu do kodu znaków wewnątrz wyrażenia regularnego, takiego jak [65-90], które byłoby takie samo jak [AZ]?
Kevin

@Kevin [65-90]będzie pasować 5- 9(co obejmuje również 6) i 0!
csabinho
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.