0
  1. if(preg_match("^[A-Za-z0-9 _]*$^",'name'))-> 1

  2. if(preg_match("^[A-Za-z0-9 _]*$^",'name--'))-> 1 //ゼロでなければなりません。jsで動作しますが、php

シナリオ1 大丈夫です。しかし、2番目のシナリオでは、ゼロにしたいのですが、preg_matchは1を出力します。この正規表現は、必要に応じてjsで機能します。使用している PHP コードの何が問題になっていますか?

4

2 に答える 2

1

量指定子は、クラス内の*ゼロ文字に一致し、[A-Za-z0-9 _]その後に入力の末尾が続きます。結果は驚くべきものではありません。正規表現は「意図​​したとおり」に機能します。

入力アンカーの開始を追加すると、期待どおりに一致が失敗します。

preg_match("^\\^[A-Za-z0-9 _]*$^",'name--')

/もちろん、古典的な区切り文字^を使用する方が良いかもしれませ.

preg_match("/^[A-Za-z0-9 _]*$/",'name--')
于 2012-10-02T10:27:08.657 に答える
1

区切り文字として使用します^が、それは開始アンカーでもあるため、あまり良くありません。したがって、開始アンカーがありません。つまり、*正確に 0 文字をカバーする有効なものです。

~^[a-z0-9 _]*$~i
于 2012-10-02T10:34:39.157 に答える