RegEx pour rechercher deux caractères consécutifs ou plus

98

Je dois déterminer si une chaîne contient deux caractères alpha consécutifs ou plus. Deux ou plus [a-zA-Z]côte à côte. Exemple:

"ab" -> valid
"a1" -> invalid
"a b" -> invalid
"a"-> invalid
"a ab" -> valid
"11" -> invalid
LRB
la source

Réponses:

206

Cela devrait faire l'affaire:

[a-zA-Z]{2,}
Simon
la source
Possible {2}sans la virgule devrait également fonctionner, non?
Alexander Mills
17
Alexander, pour clarifier quelques points: {2} signifie que la longueur doit être de 2. {2,} signifie que la longueur de l'expression peut être => 2
Shmarkus
1

Personnellement (comme nooby) j'ai utilisé:

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

Mais celui de Simon, c'est bien meilleur! = D

Mc Kazou
la source
0

[a-zA-Z] {2,} ne fonctionne pas pour au moins deux caractères consécutifs identiques. Pour ce faire, vous devez capturer n'importe quel personnage, puis répéter la capture comme ceci:

(.)\1

La parenthèse capture le. qui représente n'importe quel caractère et \ 1 est le résultat de la capture - recherchant essentiellement une répétition consécutive de ce caractère. Si vous souhaitez être précis sur quels caractères que vous souhaitez trouver sont identiques consécutifs, remplacez simplement le "tout caractère" par une classe de caractères ...

([a-zA-Z]) \ 1

Recherche une lettre minuscule ou majuscule répétitive consécutive. Correspond à "abbc123" et non à "abc1223". Pour permettre un espace entre eux (c'est-à-dire un ab), incluez alors un espace facultatif dans l'expression régulière entre le caractère capturé et la répétition ...

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

James Anderson
la source
Je suis sûr que vous avez mal compris la question car il s'agit de deux lettres. Votre regex est pour un cas différent: deux lettres similaires!
csabinho
-4

Je suis presque sûr que vous pouvez simplement utiliser [Az] au lieu de [a-zA-Z] pour obtenir des caractères alpha petits et majuscules http://www.w3schools.com/jsref/jsref_obj_regexp.asp

Kevin
la source
22
-1: Ceci est un autre exemple merveilleux de la raison pour laquelle vous ne devriez jamais utiliser w3schools pour référence ou éducation. [A-z]correspond à plus que des lettres. Plus précisément, il correspond également aux crochets, aux barres obliques inverses, aux carets, aux traits de soulignement et aux barres obliques.
Tim Pietzcker
En effet, ce que dit @TimPietzcker est correct; les caractères qu'il a mentionnés se situent entre Zet a, ainsi seraient (à tort) inclus dans un tel modèle. J'appuie la recommandation: n'utilisez pas w3schools! Il contient beaucoup d'informations subtilement mauvaises comme celle-ci.
Andrew Barber
5
Aïe première zing sur Stack, ça pique plus que je ne le pensais. Donc, en incluant Az, il correspond à tout de [AZ un tas de trucs que je ne veux pas et az] tous les charcodes entre majuscules et non majuscules? danshort.com/ASCIImap
Kevin
pour que je puisse dire quelque chose comme [! - +]? Existe-t-il également un moyen d'accéder au charcode dans une expression régulière quelque chose comme [65-90] qui serait le même que [AZ]?
Kevin
@Kevin [65-90]correspondra 5- 9(qui comprend également 6) et 0!
csabinho