0

我发现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);

这就是我想做的

4

3 回答 3

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 并且它们最后有一个

$regexPass='/^(?=.\*foo.\*)(.\*n)$/';
于 2012-12-28T11:31:36.060 回答
1

如果我正确地“解密”了您的问题,我想您只需使用and(如果必须同时匹配两者)、or(如果必须至少匹配一个)操作符preg_matchpreg_match_allphp 函数。
这是编程宝贝:)

像这样

$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
 [...]
}

您的正则表达式模式在哪里pattern以及在哪里otherPattern

于 2012-12-28T10:46:42.530 回答
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";

尽管两者几乎是相同的行,但代码的方式不同,请选择适合您口味的一种。

于 2012-12-28T11:38:56.737 回答