2012-10-02 91 views
0
不起作用
  1. if(preg_match("^[A-Za-z0-9 _]*$^",'name')) - > 1正则表达式匹配数字,字母,空格和下划线在PHP

  2. if(preg_match("^[A-Za-z0-9 _]*$^",'name--')) - > 1 //应该是零。在js中工作,但PHP

第一种情况是好的。但在第二种情况下,我希望它是一个零,但preg_match输出1.此正则表达式在js中工作,如我所愿。我使用的PHP代码有什么问题?

回答

1

*量词与类[A-Za-z0-9 _]中的零个字符匹配,后跟输入的结尾。结果应该不令人意外;正则表达式“按预期”工作。

添加输入锚的开始是成功的预期比赛会失败:

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

当然,因为使用^(其中,作为分隔符,会在它可能会更好使用经典/分隔符该开始的正则表达式的)是恕我直言,自找麻烦:

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

您使用^作为分隔符,是什么......不太好,因为它是起始锚也是。因此,你没有起始锚点,这意味着,*完全覆盖0个字符,什么是有效的。

~^[a-z0-9 _]*$~i 
相关问题