2016-10-11 10 views
1

文字列が小文字またはアンダースコアのみで構成されているかどうか確認したいと思います。 文字列がこの条件を満たしている場合、次のものがtrueを返しますか?これを行うための良い方法はありますか?preg_matchを理解する

preg_match('/[^a-z_]/', $category_address) 

ありがとうございます!

+1

あなたのコードでは、文字やアンダースコア以外の*が含まれているかどうかテストされます。したがって、このテストが成功すると、文字列が有効でないことを意味します。 – Barmar

+1

このテストは、条件がfalseの場合は1を返し、小文字のアスキー文字またはアンダースコアでない最初の文字を検索します。このテストは効率的です(すべての文字列を説明する以上に) –

答えて

1

アンカーと+数量詞を使用する:

preg_match('/\A[a-z_]+\z/', $category_address) 

パターンが一致:

  • \Aを - 文字列の先頭
  • [a-z_]+から1以上(これは貪欲な量指定+に)文字文字クラスで定義されています。小文字のASCII文字または_
  • \z - 空の文字列が一致する必要がある場合は、文字列

の最後には、あまりにも、0回以上の繰り返し定量化されたサブパターンのと一致する* 1で+数量詞を交換してください。

+1

ありがとうございました。特にこの+修飾子を指摘するために! –