Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么要对空间进行预匹配评估?_Php_Regex_Preg Match - Fatal编程技术网

Php 为什么要对空间进行预匹配评估?

Php 为什么要对空间进行预匹配评估?,php,regex,preg-match,Php,Regex,Preg Match,我有这个preg_匹配,但我不明白为什么,它是评估空间: preg_match('/[\'^\"^\0-9^£$%&*()!·¢∞&÷“≠´}{@#~?><>,|=_+¬-]/' preg\u match('/[\'^\'^\0-9^$%和*())∞&÷“≠´}{@#~?>,|=_+¬-]/' 我想验证是否存在这些字符中的任何一个,但允许使用空格,很抱歉我对正则表达式不太熟悉,我知道正则表达式中的空格是\s,提前谢谢。0-9没有生成数字范围。使用\d或0-9

我有这个preg_匹配,但我不明白为什么,它是评估空间:

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

我想验证是否存在这些字符中的任何一个,但允许使用空格,很抱歉我对正则表达式不太熟悉,我知道正则表达式中的空格是\s,提前谢谢。

0-9没有生成数字范围。使用
\d
0-9
,不带反斜杠。您也不需要转义双引号,您只需列出每个字符一次,
^
已列出多次。如果您试图将它们与前面的字符配对,则无法使用。您可以为该
(this | that)
使用可选分组。字符类中的每个字符都是独立的,但范围除外(因此,请小心使用
-

这应该与您期望当前正则表达式的功能一样:

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