アルファベット文字のみに一致する正規表現


157

アルファベット文字のみの文字列と一致する正規表現が得られるか、それだけかどうか疑問に思っていました。


2
/ ^ [a-zA-Z] + $ /のようなものが動作するはずです。
Julian Go、

10
à英字はあなたの定義に一致していますか?どの言語を使用していますか?
Tim Pietzcker、

2
空の文字列は一致する必要がありますか?
ysth

空の文字列は一致しないはずです
Steffan Harris

重要な注意点の1つは、求めている正規表現を使用したい言語やツールを参照していなかったことです。正規表現の原則は普遍的に同じですが、構文はどこでも同じではありません。どこで使用したいかを参照してください。
セルジオル

回答:


186

次の2つのバリアントのいずれかを使用できます。

/^[A-Z]+$/i
/^[A-Za-z]+$/

ASCIIアルファベットの入力文字列を照合します。

  • [A-Za-z] すべてのアルファベット(小文字と大文字の両方)に一致します。
  • ^そして$必ず何が、これらのアルファベットが一致されることになります。

コード:

preg_match('/^[A-Z]+$/i', "abcAbc^Xyz", $m);
var_dump($m);

出力:

array(0) {
}

テストケースは、入力に1つ以上のアルファベットが存在する場合のみ一致させたいというOPのコメント用です。テストケースでわかるよう^に、入力文字列に一致があったため、一致が失敗しましたabcAbc^Xyz

注:上記の回答はASCIIアルファベットにのみ一致し、Unicode文字には一致しないことに注意してください。Unicode文字に一致させたい場合は、次を使用します。

/^\p{L}+$/u

ここでは、\p{L}あらゆる言語のあらゆる種類の文字に一致します


22
一部の方言では、[Az]は、「Z」と「a」の間で発生するASCII句読値に一致します。具体的には、「[」、「\」、「]」、「^」、「-」、「 `」、 「A」から「Z」まで、「a」から「z」まで。
Lee

私が本当に欲しかったのは、アルファベット文字が含まれている場合にのみ文字列を一致させる方法です。アルファベット以外の文字が含まれている場合は一致しないはずです。
Steffan Harris、

7
@李:一部ではない。それらすべて。この正規表現は現在の状態では間違っています。
Tim Pietzcker、

7
\w is shorthand for A-Za-z-実際に\wは、省略形です[a-zA-Z0-9_]
anubhava

1
良い点@ jpmc26。私は私の元の間違いを取り除くために私の答えを編集しました。
anubhava

55

ASCII以外のアルファベット文字を含める必要があり、正規表現フレーバーがUnicodeをサポートしている場合は、

\A\pL+\z

正しい正規表現になります。

一部の正規表現エンジンはこのUnicode構文をサポートしていませんが、\w英数字の短縮形は非ASCII文字にも一致します。その場合、次の\wように数字とアンダースコアを引くと、すべてのアルファベットを取得できます。

\A[^\W\d_]+\z

\A文字列の先頭に一致し、\z文字列の末尾に(^及び$またRubyのようないくつかの言語の行の開始/終了時に一致する、または特定の正規表現のオプションが設定されている場合)。


38
+1は英語のアルファベットを唯一のアルファベットと見なさないため
srcspider

7
+1、上記と同じ。英語だけがアルファベットではなく、多くの人々はそれを正しく表現するために非ASCII文字を使用して自分の名前を書きます。
Ben Barkay 2013

22

これは、1つ以上のアルファベット文字と一致します。

/^[a-z]+$/

あなたはそれを使用して大文字と小文字を区別しないようにすることができます:

/^[a-z]+$/i

または:

/^[a-zA-Z]+$/

これはラテン文字のみに一致します。
quotesBro

13

ブラケット式でPOSIX文字クラスをサポートするRubyおよびその他の言語では、次のことを簡単に実行できます。

/\A[[:alpha:]]+\z/i

これは、すべてのUnicodeアルファベット言語の英字と一致します。かんたん。

詳細:http : //en.wikipedia.org/wiki/Regular_expression#Character_classes http://ruby-doc.org/core-2.0/Regexp.html


1
そして、これらの文字(ドキュメント化されていません)以外のすべてを取得するには、を使用します[^[:alpha]]
スパイ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.