独自一人,正则表达式的一部分。如果在它之前添加了一个零件,在它之后添加了另一个零件,它将停止工

时间:2010-01-06 23:01:42

标签: php regex codeigniter

更新:我正在取得进展,但这很难!

测试文本为valid[REGEX_EMAIL|REGEX_PASSWORD|REGEX_TEST]

(现实生活中的文字为required|valid[REGEX_EMAIL]|confirmed[emailconfirmation]|correct[not in|emailconfirmation|email confirmation]。)

([^|]+)将REGEX_EMAIL,REGEX_PASSWORD和REGEX_TEST保存在数组中。

^[^[]+\[匹配有效[

\]匹配]

^[^[]+\[ + ([^|]+) + \]未将REGEX_EMAIL,REGEX_PASSWORD和REGEX_TEST保存在数组中。

如何解决?

1 个答案:

答案 0 :(得分:1)

为什么使用单个正则表达式尝试所有内容很重要?如果先提取两个部分然后使用explode将字符串拆分为|,则会变得容易得多:

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

输出:

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