3

文字、ピリオド、アポストロフィ、スペース、ハイフン以外のすべてを拒否するように、正しい表現をまとめるのに苦労しています。

これまでのところ、これはアポストロフィを除くすべてで機能します。アポストロフィは、シングルとダブルの両方の「\」でエスケープしようとしましたが、役に立ちませんでした。

  if(!preg_match("/^[a-zA-Z'. -]+$/",$_POST['name']))
  {
      $error_name="The name you entered is invalid.";
  }
 //obrien - pass
 //o'brien - fail
 //Dr. OBrien - pass
 //Dr. O'Brien - fail

これは、アポストロフィがそれをクリアしないことを除いて、完全に機能します。

4

3 に答える 3

3

ハイフン、アポストロフィ、スペースなどを含むほとんどの名前で機能するはずです。

    if(!preg_match('/^([a-zA-Z]+[\'-]?[a-zA-Z]+[ ]?)+$/', $string))
于 2014-10-25T00:03:36.970 に答える
2
于 2013-09-27T17:29:49.120 に答える