0

我正在尝试验证 php 中的真/假开关。用户输入可以是“true”、“1”、“on”或“yes”——而且它应该不区分大小写。为什么我的正则表达式只适用于“1”和“on”?

测试.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
4

1 回答 1

4

您错误地放置了双定界符#//i#因此另一个“定界符”是正则表达式的正常部分,并且/i不区分大小写的修饰符不起作用,它只是正则表达式的一部分

应该只是

define("REGEXP_TRUE", '/true|1|on|yes/i');
于 2013-03-19T16:32:32.633 回答