如何用正则表达式完成?
return ( $s=='aa' || $s=='bb' || $s=='cc' || $s=='dd' ) ? 1 : 0;
我在尝试:
$s = 'aa';
$result = preg_match( '/(aa|bb|cc|dd)/', $s );
echo $result; // 1
但显然如果1
包含一个或多个指定字符串(而不是等于其中一个字符串),则返回$s
。
答案 0 :(得分:9)
您需要使用开始^
和结束$
锚点来进行精确的字符串匹配。
$result = preg_match( '/^(aa|bb|cc|dd)$/', $s );
答案 1 :(得分:3)
$s = 'aa';
$result = preg_match( '/^(aa|bb|cc|dd)$/', $s );
echo $result;
使用^和$指定从输入开始到结束的匹配。
答案 2 :(得分:3)
我认为RegEx对这个问题有点过分了。
我的解决方案:
$results = array('aa', 'bb', 'cc', 'dd');
$c = 'aa';
if(in_array($c, $results, true)) {
echo 'YES';
} else {
echo 'NO';
}