文字だけにマッチする正規表現を書くにはどうすればいいですか?
文字セットを使用します。[a-zA-Z]
は、AからZまでの1文字と小文字および大文字で一致します。 [a-zA-Z]+
は1つ以上の文字に一致し、^[a-zA-Z]+$
は1つ以上の文字のみからなる文字列にのみ一致します(^
および$
はそれぞれ文字列の始めと終わりを示します)。
A〜Z以外の他の文字と一致させたい場合は、それらを文字セットに追加することもできます:[a-zA-ZäöüßÄÖÜ]
。または、 Unicode文字プロパティ class \p{L}
のように、文字であるUnicode文字を記述する事前定義済みの文字クラスを使用します。
ラテン語以外のアルファベットに興味がある場合、\p{L}
はUnicode文字に一致します。
あなたの "文字"の意味によりますが:
[A-Za-z]
- すべての文字 (大文字と小文字)
[^0-9]
- 数字以外のすべての文字
利用可能な最も近いオプションは
[\u\l]+
これは大文字と小文字のシーケンスに一致します。ただし、すべてのエディタ/言語でサポートされているわけではないので、おそらく使用するほうが安全です
[a-zA-Z]+
他のユーザーが提案しているように
あなたが使うだろう
/[a-z]/gi
[] - 与えられた入力の間にある文字をチェックします
a-z ---アルファベット全体をカバー
g -----文字列全体を通してグローバルに
i -----大文字と小文字を取得する
ほとんどの人が "/ ^ [a-zA-Z] $/i"と書いた正規表現は正しくありません。なぜなら、最後に言及したのは /i です。戻ってきます。 /i の代わりに /g を使用してください。これはグローバルであり、開始と終了に ^ $ を追加する必要もありません。
/[a-zA-Z]+/g
PHPの場合、以下はうまくいくでしょう
'/^[a-zA-Z]+$/'
Java:
String s= "abcdef";
if(s.matches("[a-zA-Z]+")){
System.out.println("string only contains letters");
}
\w
か[:alpha:]
を使うだけです。それは単語に現れるかもしれないシンボルだけにマッチするエスケープシーケンスです。
任意の文字エンコーディングの任意の文字を意味する場合は、スペース\s
、数字\d
、およびその他の特殊文字のような非文字を削除することをお勧めします。
[!@#\$%\^&\*\(\)\[\]:;'",\. ...more special chars... ]
または、上記の否定の否定を使用して任意の文字を直接記述します。
\S \D and [^ ..special chars..]
長所:
短所:
あなたはこの正規表現を試すことができます:[^\W\d_]
または[a-zA-Z]
。
パターン=/[a-zA-Z] /
"[a-zA-Z]:#{pattern.match(" mine blossom ")}"を付けてOK
"[a-zA-Z]:#{pattern.match(" 456 ")}"を付けます
"[a-zA-Z]:#{pattern.match(" ")}"を付けます
"[a-zA-Z]:#{pattern.match("#$%^&* ")}"を付けます
"[a-zA-Z]:#{pattern.match("#$%^&* A ")}"を付けてOK