RegEx, um zwei oder mehr aufeinanderfolgende Zeichen zu finden

93

Ich muss feststellen, ob eine Zeichenfolge zwei oder mehr aufeinanderfolgende Alpha-Zeichen enthält. Zwei oder mehr [a-zA-Z]nebeneinander. Beispiel:

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

Antworten:

196

Dies sollte den Trick tun:

[a-zA-Z]{2,}
Simon
quelle
Möglich {2}ohne das Komma sollte auch funktionieren, oder?
Alexander Mills
15
Alexander, nur um ein paar Dinge zu klären: {2} bedeutet, dass die Länge 2 sein muss. {2,} bedeutet, dass die Länge des Ausdrucks => 2 sein kann
Shmarkus
1

Persönlich (als Nooby) habe ich verwendet:

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

Aber der von Simon ist viel besser! = D.

Mc Kazou
quelle
-1

[a-zA-Z] {2,} funktioniert nicht für zwei oder mehr identische aufeinanderfolgende Zeichen. Dazu sollten Sie einen beliebigen Charakter erfassen und die Erfassung dann wie folgt wiederholen:

(.) \ 1

Die Klammer erfasst die. Dies stellt ein beliebiges Zeichen dar und \ 1 ist das Ergebnis der Erfassung - im Grunde genommen wird nach einer fortlaufenden Wiederholung dieses Zeichens gesucht. Wenn Sie genau wissen möchten, welche Zeichen, die Sie finden möchten, nacheinander identisch sind, ersetzen Sie einfach das "beliebige Zeichen" durch eine Zeichenklasse ...

([a-zA-Z]) \ 1

Findet einen aufeinanderfolgenden sich wiederholenden Klein- oder Großbuchstaben. Stimmt mit "abbc123" und nicht mit "abc1223" überein. Um ein Leerzeichen zwischen ihnen (dh ein ab) zuzulassen, fügen Sie in den regulären Ausdruck zwischen dem erfassten Zeichen und der Wiederholung ein optionales Leerzeichen ein ...

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

James Anderson
quelle
Ich bin mir ziemlich sicher, dass Sie die Frage falsch verstanden haben, da es sich um zwei Buchstaben handelt. Ihre Regex ist für einen anderen Fall: zwei ähnliche Buchstaben!
Csabinho
-4

Ich bin mir ziemlich sicher, dass Sie einfach [Az] anstelle von [a-zA-Z] verwenden können, um kleine und große Alpha-Zeichen zu erhalten. Http://www.w3schools.com/jsref/jsref_obj_regexp.asp

Kevin
quelle
22
-1: Dies ist ein weiteres wunderbares Beispiel dafür, warum Sie w3schools niemals als Referenz oder Bildung verwenden sollten. [A-z]passt mehr als Buchstaben. Insbesondere werden auch eckige Klammern, Backslashes, Carets, Unterstriche und Backticks verwendet.
Tim Pietzcker
In der Tat ist das, was @TimPietzcker sagt, richtig; Die Zeichen, die er erwähnte, kommen dazwischen Zund awürden (fälschlicherweise) in ein solches Muster aufgenommen. Ich stimme der Empfehlung zu: Verwenden Sie keine w3schools! Es hat viele subtil schlechte Informationen wie diese.
Andrew Barber
5
Autsch, zuerst auf Stack, es sticht mehr als ich dachte. Wenn Sie also Az einschließen, stimmt es mit allen Zeichen überein, die zwischen Großbuchstaben und Nicht-Großbuchstaben liegen. danshort.com/ASCIImap
Kevin
also kann ich so etwas wie [! - +] sagen? Gibt es auch eine Möglichkeit, auf den Zeichencode in einem regulären Ausdruck wie [65-90] zuzugreifen, der mit [AZ] identisch wäre?
Kevin
@ Kevin [65-90]wird übereinstimmen 5- 9(was auch beinhaltet 6) und 0!
Csabinho