我正在尝试验证php中的真/假开关。用户输入可以是"true"、"1"、"on"或"yes",并且不区分大小写。为什么我的正则表达式只适用于"1"answers"on"?
test.php:
define("REGEXP_TRUE", '#/true|1|on|yes/i#');
echo preg_match( REGEXP_TRUE, "true" );
echo "'n".preg_match( REGEXP_TRUE, "1" );
echo "'n".preg_match( REGEXP_TRUE, "on" );
echo "'n".preg_match( REGEXP_TRUE, "yes" )."'n";
输出:[mles@worker]$ ./bin/php test.php
0
1
1
0
您错误地放置了双分隔符#/
和/i#
,因此其他"分隔符"是regex表达式的正常部分,/i
大小写不敏感修饰符不起作用,它只是regex的一部分
应该是
define("REGEXP_TRUE", '/true|1|on|yes/i');