regex & # 39; # /真| 1 | |是的/我# & # 39;只适用于第二个和第三个单词


regex '#/true|1|on|yes/i#' only works for 2nd and 3rd word

我正在尝试验证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');