if(preg_match("^[A-Za-z0-9 _]*$^",'name'))
-> 1if(preg_match("^[A-Za-z0-9 _]*$^",'name--'))
-> 1 //ゼロでなければなりません。jsで動作しますが、php
シナリオ1 大丈夫です。しかし、2番目のシナリオでは、ゼロにしたいのですが、preg_matchは1を出力します。この正規表現は、必要に応じてjsで機能します。使用している PHP コードの何が問題になっていますか?
量指定子は、クラス内の*
ゼロ文字に一致し、[A-Za-z0-9 _]
その後に入力の末尾が続きます。結果は驚くべきものではありません。正規表現は「意図したとおり」に機能します。
入力アンカーの開始を追加すると、期待どおりに一致が失敗します。
preg_match("^\\^[A-Za-z0-9 _]*$^",'name--')
/
もちろん、古典的な区切り文字^
を使用する方が良いかもしれません.
preg_match("/^[A-Za-z0-9 _]*$/",'name--')
区切り文字として使用します^
が、それは開始アンカーでもあるため、あまり良くありません。したがって、開始アンカーがありません。つまり、*
正確に 0 文字をカバーする有効なものです。
~^[a-z0-9 _]*$~i