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.
à
ein alphabetisches Zeichen Ihrer Definition? Welche Sprache benutzt du?
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.
à
ein alphabetisches Zeichen Ihrer Definition? Welche Sprache benutzt du?
Antworten:
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.Code:
preg_match('/^[A-Z]+$/i', "abcAbc^Xyz", $m);
var_dump($m);
Ausgabe:
array(0) {
}
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
\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
\A\pL+\z
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[^\W\d_]+\z
\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).
Dies entspricht einem oder mehreren alphabetischen Zeichen:
/^[a-z]+$/
Sie können die Groß- und Kleinschreibung nicht berücksichtigen, indem Sie Folgendes verwenden:
/^[a-z]+$/i
oder:
/^[a-zA-Z]+$/
In Ruby und anderen Sprachen, die POSIX-Zeichenklassen in Klammerausdrücken unterstützen, können Sie einfach Folgendes tun:
/\A[[:alpha:]]+\z/i
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
[^[:alpha]]
.
[a-zA-Z]
sollte das ganz gut machen.
Sie können auf den Spickzettel verweisen .