Yalnız, bir regex eserlerin bir parçası.

1 Cevap php

GÜNCELLEME: Ben ilerleme yapıyorum, ama bu zor!

Test metin olacaktır valid[REGEX_EMAIL|REGEX_PASSWORD|REGEX_TEST].

(Gerçek hayat metin required|valid[REGEX_EMAIL]|confirmed[emailconfirmation]|correct[not in|emailconfirmation|email confirmation] olduğunu.)

([^|]+), bir dizi REGEX_EMAIL, REGEX_PASSWORD ve REGEX_TEST kaydeder.

^[^[]+\[ geçerli [maçları

\] maçları]

^[^[]+\[ + ([^|]+) + \] bir dizide REGEX_EMAIL, REGEX_PASSWORD ve REGEX_TEST kaydetmek değildir.

Nasıl çözmek için?

1 Cevap

Neden tek bir düzenli ifade ile her şeyi denemek için önemlidir? İlk iki parça ayıklamak ve ardından | patlayabilir kullanarak dizeleri bölerseniz çok daha kolay olur:

$s = 'valid[REGEX_EMAIL|REGEX_PASSWORD|REGEX_TEST]';
$matches = array();
$s = preg_match('/^([^[]++)\[([^]]++)\]$/', $s, $matches);
$left = explode('|', $matches[1]);
$right = explode('|', $matches[2]);
print_r($left);
print_r($right);

Çıktı:

Array
(
    [0] => valid
)
Array
(
    [0] => REGEX_EMAIL
    [1] => REGEX_PASSWORD
    [2] => REGEX_TEST
)