为什么这个 preg_match 评估空间?

Why this preg_match evaluate spaces?

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

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

我想验证是否有任何这些字符但允许 spaces,抱歉我不太擅长正则表达式,我知道正则表达式中的 space 是 \s,提前谢谢你。

[=11=]-9 没有生成数字范围。使用 \d0-9,不带反斜杠。你也不需要转义双引号,你只需要列出每个字符一次,>^ 被列出了不止一次。如果您试图将它们与前面的字符配对,那是行不通的。您可以为 (this|that) 使用一个可选的分组。字符 class 中的每个字符都是独立的,但范围除外(因此请注意 -)。

这应该按照您期望的当前正则表达式的方式运行:

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