为什么这个preg_match模式在数字输入上返回true?

时间:2012-07-19 15:52:32

标签: php preg-match

我知道这对某些人来说非常基本,但这让我头疼。为什么这种模式

/[!@#$%^&*()+|.*-<>\'`]/ 

在数字输入上返回true,即abcd123。在this tester

上测试了它

3 个答案:

答案 0 :(得分:5)

您需要转义破折号,否则将其解释为字符范围\x2A-\x3E

/[!@#$%^&*()+|.*\-<>\'`]/ 

答案 1 :(得分:1)

这是因为正则表达式中有-符号。

答案 2 :(得分:0)

你必须反斜杠“ - ”,如下所示:

/[!@#$%^&()+|.\-<>\'`]/

我认为你也应该反斜杠所有的特殊字符。