if(preg_match("^[A-Za-z0-9 _]*$^",'name'))
-> 1if(preg_match("^[A-Za-z0-9 _]*$^",'name--'))
-> 1 //应该是零。在 js 中工作,但在 php 中工作
第一种情况很好。但在第二种情况下,我希望它为零,但 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