41

入力に大文字または小文字のアルファベット文字、スペース、ピリオド、アンダースコア、およびダッシュのみが含まれていることを確認する正規表現バリデーターの作成に問題があります。検索でこの例をオンラインで見つけることができませんでした。例えば:

これらは大丈夫です:

Dr. Marshall
sam smith
.george con-stanza .great
peter.
josh_stinson
smith _.gorne

他のキャラクターが含まれているものは問題ありません。それは数字、またはその他の記号です。

4

2 に答える 2

96

あなたが探している正規表現は^[A-Za-z.\s_-]+$

  • ^正規表現が件名の先頭で一致する必要があることを主張します
  • []は文字クラスです - この式内で一致する任意の文字が許可されます
  • A-Z大文字の範囲を許可する
  • a-z小文字の範囲を許可します
  • .文字の範囲ではなくピリオドに一致
  • \s空白 (スペースとタブ) に一致します
  • _アンダースコアに一致
  • -ダッシュ (ハイフン) に一致します。文字クラスの最後の文字として使用しているため、文字範囲の一部として解釈されません。代わりにエスケープ ( \-) して、文字クラスの任意の場所に配置することもできますが、それはあまり明確ではありません
  • +前の式 (この場合は文字クラス) が1 回以上一致する必要があることを表明します
  • $最後に、これは私たちが主題の終わりにいることを主張しています

正規表現をテストしているときは、おそらくregexpalのようなツールが役立つでしょう。これにより、正規表現がサンプル データに一致する (または一致しない) ことを、書き込み時にリアルタイムで確認できます。

于 2012-11-13T00:04:58.803 に答える
6

チュートリアルで正規表現の基礎を確認してください。必要なのは、2 つのアンカー繰り返される 文字クラスだけです。

^[a-zA-Z ._-]*$

大文字と小文字を区別しない修飾子を使用する場合、これを次のように短縮できます。

^[a-z ._-]*$

スペースが重要であることに注意してください (これは他の文字と同じです)。

于 2012-11-13T00:05:23.120 に答える