为什么这个preg_match会评估空格?

时间:2018-05-31 16:27:15

标签: php regex preg-match

我有这个preg_match,但我不明白为什么,它正在评估空格:

preg_match('/[\'^\"^\0-9^£$%&*()!·¢∞&÷“≠´}{@#~?><>,|=_+¬-]/'

我想验证是否有任何这些字符但允许空格,抱歉我对正则表达式不太好,我知道正则表达式中的空格是\ s,请提前谢谢。

1 个答案:

答案 0 :(得分:1)

\0-9没有提供一系列数字。使用\d0-9,不使用反斜杠。您也不需要转义双引号,只需列出每个字符一次,>^被列出多次。如果你试图将它们与前面的无法工作的角色配对。您可以为(this|that)使用可选分组。字符类中的每个字符都是个体的,但范围除外(因此要小心-)。

这应该像您期望当前的正则表达式一样起作用:

[\'^"0-9£$%&*()!·¢∞&÷“≠´}{@#~?<>,|=_+¬-]