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

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

测试文本将有效[REGEX_EMAIL | REGEX_PASSWORD | REGEX_TEST] </ code>。</ p>

(现实生活文本为 required | valid [REGEX_EMAIL] |确认[ emailconfirmation] | correct [not in | emailconfirmation | email confirmation] </ code>。)</ p>

([^ |] +)</ code>保存REGEX_EMAIL,REGEX_PASSWORD和REGEX_TEST 在数组中。</ p>

^ [^ [] + \ [</ code>匹配有效[</ p>

] < / code>匹配] </ p>

^ [^ [] + \ [</ code> + ([^ |] +)</ code> + ] </ code>不会将REGEX_EMAIL,REGEX_PASSWORD和REGEX_TEST保存在数组中。</ p>

如何解决?</ p>
</ div>

展开原文

原文

UPDATE: I'm making progress, but this is hard!

The test text will be valid[REGEX_EMAIL|REGEX_PASSWORD|REGEX_TEST].

(The real life text is required|valid[REGEX_EMAIL]|confirmed[emailconfirmation]|correct[not in|emailconfirmation|email confirmation].)

([^|]+) saves REGEX_EMAIL, REGEX_PASSWORD and REGEX_TEST in an array.

^[^[]+\[ matches valid[

\] matches ]

^[^[]+\[ + ([^|]+) + \] doesn't save REGEX_EMAIL, REGEX_PASSWORD and REGEX_TEST in an array.

How to solve?

douqi3913
douqi3913 另一个问题:匹配所有内容,除了[,]以及[和]之间的所有内容。这个问题:在[和]之间,使用|拆分字符串作为数组的分隔符。
接近 11 年之前 回复

1个回答

Why is it important to try to everything with a single regular expression? It becomes much easier if you extract the two parts first and then split the strings on | using 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);

Output:

Array
(
    [0] => valid
)
Array
(
    [0] => REGEX_EMAIL
    [1] => REGEX_PASSWORD
    [2] => REGEX_TEST
)
dri98076
dri98076 你可以用+替换++,它会给你完全相同的结果。
接近 11 年之前 回复
doushifen4060
doushifen4060 它真的像你说的那样! (?:c(a)t)+ for catcat只保存第二个:-( ++太高级了,我还是不明白原子分组:-(
接近 11 年之前 回复
dowaw80220
dowaw80220 我已经更新了我的答案。
接近 11 年之前 回复
douyu0725
douyu0725 拜托,回来! 问题已更新。
接近 11 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐