测试一个字符串是否等于其中一个字符串(使用正则表达式)

时间:2014-11-18 16:13:33

标签: php regex

如何用正则表达式完成?

 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

3 个答案:

答案 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';
}