Есть ли какая-либо функция для сравнения строки с двумя регулярными выражениями за раз в php

Я нашел preg_match и preg_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);

это то, что я хочу сделать

0
добавлено отредактировано
Просмотры: 1
de
Как выглядят шаблоны регулярных выражений? Возможно, вы можете просто сделать это в одном :)
добавлено автор PeeHaa, источник
Можете ли вы дать нам конкретный пример того, что вы хотели бы сделать? Составьте имя функции, вставьте два регулярных выражения, которые вы хотите использовать, и опишите, используя слова и код, что вы хотели бы видеть. PeeHaa почти наверняка прав в том, что то, что вы делаете, возможно, может быть сделано с использованием одного регулярного выражения, но мы не можем быть уверены, пока вы не покажете нам, что вы на самом деле пытаетесь выполнить.
добавлено автор Charles, источник

3 ответы

Вы можете использовать regex lookahead, в котором субъект сначала попытается сопоставить 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, и у них есть n на конце

$regexPass='/^(?=.\*foo.\*)(.\*n)$/';
2
добавлено

If I've "decrypted" correctly your question, I suppose that you have simply to use and (if have to match both),or(if have to match at least one) operators with preg_match or preg_match_all PHP function.
This is programming baby :)

Как это

$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 - ваши шаблоны regexp

1
добавлено
@Jelmer_ обновлено
добавлено автор DonCallisto, источник
пожалуйста, добавьте документацию и/или пример кода, чтобы показать нам, что вы имеете в виду. Тогда я выберу это :)
добавлено автор Jelmer, источник
@DonCallisto Promise - это обещание. Готово :)
добавлено автор Jelmer, источник
но, к сожалению, я получаю шаблон как массив if ((preg_match ($ pattern [], $ string) {// некоторый код}, который я не хочу использовать для цикла
добавлено автор Ajay Gandham, источник

У меня есть два варианта, вы можете использовать любой, который соответствует вашим потребностям (я использую и условию для примера) -

1)

$subject = "abcdef";
$pattern = '/^def/';
$result = preg_match($pattern, substr($subject,3));
$result1 = preg_match("/php/i", "PHP is the web scripting language of choice.");
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";

Хотя обе имеют почти одинаковые линии, но способ кода отличается, выберите тот, который соответствует вашему вкусу.

0
добавлено