为什么这个 preg_match 评估空间?
Why this preg_match evaluate spaces?
我有这个 preg_match,但我不明白为什么,它正在评估 spaces:
preg_match('/[\'^\"^[=11=]-9^£$%&*()!·¢∞&÷“≠´}{@#~?><>,|=_+¬-]/'
我想验证是否有任何这些字符但允许 spaces,抱歉我不太擅长正则表达式,我知道正则表达式中的 space 是 \s,提前谢谢你。
[=11=]-9
没有生成数字范围。使用 \d
或 0-9
,不带反斜杠。你也不需要转义双引号,你只需要列出每个字符一次,>
和 ^
被列出了不止一次。如果您试图将它们与前面的字符配对,那是行不通的。您可以为 (this|that)
使用一个可选的分组。字符 class 中的每个字符都是独立的,但范围除外(因此请注意 -
)。
这应该按照您期望的当前正则表达式的方式运行:
[\'^"0-9£$%&*()!·¢∞&÷“≠´}{@#~?<>,|=_+¬-]
我有这个 preg_match,但我不明白为什么,它正在评估 spaces:
preg_match('/[\'^\"^[=11=]-9^£$%&*()!·¢∞&÷“≠´}{@#~?><>,|=_+¬-]/'
我想验证是否有任何这些字符但允许 spaces,抱歉我不太擅长正则表达式,我知道正则表达式中的 space 是 \s,提前谢谢你。
[=11=]-9
没有生成数字范围。使用 \d
或 0-9
,不带反斜杠。你也不需要转义双引号,你只需要列出每个字符一次,>
和 ^
被列出了不止一次。如果您试图将它们与前面的字符配对,那是行不通的。您可以为 (this|that)
使用一个可选的分组。字符 class 中的每个字符都是独立的,但范围除外(因此请注意 -
)。
这应该按照您期望的当前正则表达式的方式运行:
[\'^"0-9£$%&*()!·¢∞&÷“≠´}{@#~?<>,|=_+¬-]