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:
[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 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
[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.
Z
a a
więc zostałyby (błędnie) zawarte w takim wzorze. Popieram zalecenie: nie używaj w3schools! Zawiera wiele subtelnie złych informacji, takich jak ta.
[65-90]
będzie pasować 5
- 9
(co obejmuje również 6
) i 0
!
{2}
bez przecinka też powinno działać, prawda?