是否有任何函数可以在php中一次比较字符串和两个正则表达式

时间:2012-12-28 10:42:36

标签: php regex

我找到了preg_matchpreg_match_all,但这些只能一次使用一个正则表达式。

function match(){
    $pattern = array(
        '/^\-?\+?[0-9e1-9]+$/',
        '/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9 ]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/'
    );
    $string = '234';
    $pattern_mod = import(",",$pattern);
    preg_match($pattern_mod ,$string);

这就是我想做的事情

3 个答案:

答案 0 :(得分:2)

您可以使用正则表达式预测,其中主题将首先尝试匹配foo并且他们尝试匹配bar。 像这样:

$regexPass='/^(?=((.*[A-Za-z].*[0-9].*)|(.*[0-9].*[A-Za-z].*)))(.{6,})$/';

上面的正则表达式说它必须匹配第一个表达式((.*[A-Za-z].*[0-9].*)|(.*[0-9].*[A-Za-z].*))),在这种情况下是字母数字,至少有一个数字和一个字母,而且它们匹配至少6个数字。

以更简单的方式,你可以匹配foo,并且他们在最后有一个n

$regexPass='/^(?=.\*foo.\*)(.\*n)$/';

答案 1 :(得分:1)

如果我已正确“解密”您的问题,我认为您只是使用and(如果必须匹配)or(如果有的话)匹配至少一个运算符与preg_matchpreg_match_all php函数。
这是编程宝贝:)

喜欢这个

$string='myString';

if( (preg_match(pattern,$string) and (preg_match(otherPattern,$string) )
{
 //do things
 [...]
}

or

if( (preg_match(pattern,$string) or (preg_match(otherPattern,$string) )
{
 //do things
 [...]
}

patternotherPattern是你的正则表达式

答案 2 :(得分:0)

我有两个选项,你可以使用任何一个适合你的需要(我正在使用和条件只是一个例子) -

1)

$subject = "abcdef";<br />
$pattern = '/^def/'; <br />
$result = preg_match($pattern, substr($subject,3)); <br/>
$result1 = preg_match("/php/i", "PHP is the web scripting language of choice."); <br />
echo ($result && $result1)?"true" :"false"

2)

 echo (preg_match($pattern, substr($subject,3)) && preg_match("/php/i", "PHP is the web scripting language of choice."))?"true" :"false";

虽然两者几乎相同,但代码的方式不同,请选择一个符合您口味的方法。