Regulärer Ausdruck, der nur alphabetischen Zeichen entspricht
157
Ich habe mich gefragt, ob ich einen regulären Ausdruck bekommen könnte, der mit einer Zeichenfolge übereinstimmt, die nur alphabetische Zeichen enthält, und das allein.
So etwas wie / ^ [a-zA-Z] + $ / sollte funktionieren.
Julian Go
10
Entspricht àein alphabetisches Zeichen Ihrer Definition? Welche Sprache benutzt du?
Tim Pietzcker
2
sollte eine leere Zeichenfolge übereinstimmen?
20.
Nein, eine leere Zeichenfolge sollte nicht übereinstimmen
Steffan Harris
Ein wichtiger Hinweis: Sie haben keine Sprache oder kein Tool angegeben, in dem Sie den von Ihnen gewünschten regulären Ausdruck verwenden möchten. Obwohl die Prinzipien der regulären Ausdrücke universell gleich sind, ist die Syntax nicht überall gleich. Sie sollten angeben, wo Sie es verwenden möchten.
Sergiol
Antworten:
186
Sie können eine dieser beiden Varianten verwenden:
/^[A-Z]+$/i
/^[A-Za-z]+$/
um eine Eingabezeichenfolge von ASCII-Alphabeten abzugleichen.
[A-Za-z] stimmt mit allen Alphabeten überein (sowohl Klein- als auch Großbuchstaben).
^und $wird sicherstellen, dass nichts als diese Alphabete übereinstimmen.
Der Testfall bezieht sich auf den Kommentar von OP, dass er nur dann übereinstimmen möchte, wenn 1 oder mehr Alphabete in der Eingabe vorhanden sind. Wie Sie im Testfall sehen können, sind Übereinstimmungen fehlgeschlagen, weil ^die Eingabezeichenfolge vorhanden war abcAbc^Xyz.
Hinweis: Bitte beachten Sie, dass die obige Antwort nur mit ASCII-Alphabeten und nicht mit Unicode-Zeichen übereinstimmt. Wenn Sie mit Unicode-Buchstaben übereinstimmen möchten, verwenden Sie:
/^\p{L}+$/u
Hier \p{L}passt jede Art von Brief aus jeder Sprache
In einigen Dialekten stimmt [Az] mit den ASCII-Interpunktionswerten überein, die zwischen 'Z' und 'a' auftreten, insbesondere '[', '\', ']', '^', '-' und '' ', as sowie 'A' bis 'Z' und 'a' bis 'z'.
Lee
Was ich wirklich wollte, ist eine Möglichkeit, meine Zeichenfolge nur dann abzugleichen, wenn sie alphabetische Zeichen enthält. Wenn sie ein nicht alphabetisches Zeichen enthält, sollte sie nicht übereinstimmen.
Steffan Harris
7
@ Lee: Nicht einige. Alle von ihnen. Diese Regex ist in ihrem aktuellen Zustand falsch.
Tim Pietzcker
7
\w is shorthand for A-Za-z- nicht wirklich, \wist eine Abkürzung für[a-zA-Z0-9_]
Anubhava
1
Guter Punkt @ jpmc26. Ich habe meine Antwort bearbeitet, um meinen ursprünglichen Fehler zu beseitigen.
Anubhava
55
Wenn Sie nicht-ASCII-alphabetische Zeichen einfügen müssen und Ihre Regex-Variante Unicode unterstützt, dann
\A\pL+\z
wäre die richtige Regex.
Einige Regex-Engines unterstützen diese Unicode-Syntax nicht, erlauben jedoch, dass die \walphanumerische Kurzform auch mit Nicht-ASCII-Zeichen übereinstimmt. In diesem Fall können Sie alle Alphabete erhalten, indem Sie Ziffern und Unterstriche \wwie folgt abziehen :
\A[^\W\d_]+\z
\AÜbereinstimmungen am Anfang der Zeichenfolge, \zam Ende der Zeichenfolge ( ^und $auch am Anfang / Ende von Zeilen in einigen Sprachen wie Ruby oder wenn bestimmte Regex-Optionen festgelegt sind).
à
ein alphabetisches Zeichen Ihrer Definition? Welche Sprache benutzt du?Antworten:
Sie können eine dieser beiden Varianten verwenden:
um eine Eingabezeichenfolge von ASCII-Alphabeten abzugleichen.
[A-Za-z]
stimmt mit allen Alphabeten überein (sowohl Klein- als auch Großbuchstaben).^
und$
wird sicherstellen, dass nichts als diese Alphabete übereinstimmen.Code:
Ausgabe:
Der Testfall bezieht sich auf den Kommentar von OP, dass er nur dann übereinstimmen möchte, wenn 1 oder mehr Alphabete in der Eingabe vorhanden sind. Wie Sie im Testfall sehen können, sind Übereinstimmungen fehlgeschlagen, weil
^
die Eingabezeichenfolge vorhanden warabcAbc^Xyz
.Hinweis: Bitte beachten Sie, dass die obige Antwort nur mit ASCII-Alphabeten und nicht mit Unicode-Zeichen übereinstimmt. Wenn Sie mit Unicode-Buchstaben übereinstimmen möchten, verwenden Sie:
Hier
\p{L}
passt jede Art von Brief aus jeder Sprachequelle
\w is shorthand for A-Za-z
- nicht wirklich,\w
ist eine Abkürzung für[a-zA-Z0-9_]
Wenn Sie nicht-ASCII-alphabetische Zeichen einfügen müssen und Ihre Regex-Variante Unicode unterstützt, dann
wäre die richtige Regex.
Einige Regex-Engines unterstützen diese Unicode-Syntax nicht, erlauben jedoch, dass die
\w
alphanumerische Kurzform auch mit Nicht-ASCII-Zeichen übereinstimmt. In diesem Fall können Sie alle Alphabete erhalten, indem Sie Ziffern und Unterstriche\w
wie folgt abziehen :\A
Übereinstimmungen am Anfang der Zeichenfolge,\z
am Ende der Zeichenfolge (^
und$
auch am Anfang / Ende von Zeilen in einigen Sprachen wie Ruby oder wenn bestimmte Regex-Optionen festgelegt sind).quelle
Dies entspricht einem oder mehreren alphabetischen Zeichen:
Sie können die Groß- und Kleinschreibung nicht berücksichtigen, indem Sie Folgendes verwenden:
oder:
quelle
In Ruby und anderen Sprachen, die POSIX-Zeichenklassen in Klammerausdrücken unterstützen, können Sie einfach Folgendes tun:
Das stimmt mit Alpha-Zeichen in allen Unicode-Alphabet-Sprachen überein. Kinderleicht.
Weitere Informationen: http://en.wikipedia.org/wiki/Regular_expression#Character_classes http://ruby-doc.org/core-2.0/Regexp.html
quelle
[^[:alpha]]
.[a-zA-Z]
sollte das ganz gut machen.Sie können auf den Spickzettel verweisen .
quelle