2012-12-28 31 views
0

我发现preg_matchpreg_match_all但这些将一次只能使用一个正则表达式。是否有任何函数比较一个字符串与两个正则表达式在一次在php

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); 

这就是我想要做的

+2

正则表达式模式是什么样的?也许你可以简单地在一个:) – PeeHaa

+3

你能给我们一个你想要做什么的具体例子吗?编写一个函数名称,放入你想使用的两个正则表达式,然后用单词和代码描述你想看到的结果。 PeeHaa几乎肯定是正确的,因为你正在做的事情可以使用一个正则表达式来完成,但是直到你向我们展示你实际正在尝试完成的事情之前,我们无法确定。 – Charles

回答

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

请添加文档和/或代码示例以向我们展示您的意思。然后,我将upvote :) :) – Jelmer

+0

@Jelmer_更新 – DonCallisto

+0

,但不幸的是我得到模式作为数组如果((preg_match($模式[],$字符串){/ /一些代码}我不想用于循环 –

2

你可以使用正则表达式前瞻,其中主题将首先尝试匹配foo和他们尝试以匹配酒吧。 像这样:

$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)$/'; 
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"; 

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

相关问题