gpt4 book ai didi

php - php 中的正则表达式用于验证模式

转载 作者:行者123 更新时间:2023-12-02 04:07:58 26 4
gpt4 key购买 nike

我遇到了一些与正则表达式和模式相关的问题。我的输入必须是 A 或 B 的格式,或者是 A 和 B 的多次组合。

来说明一下

模式是 x(y)

B 模式为 x(y,z)

A,B 表示 x(y),x(y,z)

组合可以是但不限于

A,A

A,A,A

A,B,A

B,B

B,B,B

等等,每个组合没有具体的数字。有没有可用的方法来验证组合中的 A 和 B 的格式是否正确。

我认为我应该做的是在分隔符处拆分组合,然后将每个数组元素传递给验证我的 A 和 B 的函数。

$rule=$_POST['rule'];                             //e,g aaa(bbb,ccc) OR aaa(bbb)
$patternR1='/^\w+[\(]\w+[\)]$/';
$patternR2='/^\w+[\(]\w+[\,]\w+[\)]$/';
if (preg_match($patternR1, $rule ))
{
echo "Your entered rule is ".$rule." satisfying the correct format: x(y)";

}
else if(preg_match($patternR2, $rule))
{
echo "Your entered rule is ".$rule." satisfying the correct format: x(y,z)";
}
else
{
echo "Syntax error in the rule body ". $rule." has to be either in x(y) or x(y,z) format";
$ef=0;
}

另请注意,A 和 B 之间有一个逗号分隔,并且模式 B 内部有一个逗号,在上下文中具有不同的含义。

最佳答案

您正在寻找的正则表达式是

/^(?<foo>\w\(\w(,\w)?\))(,(?&foo))*$/gi

你可以测试它并使用它 here

因此,名为 foo 的模式概括了您命名的 AB,即 \w\(\w(,\w)?\)。然后我们允许使用前面的逗号来递归该模式。就是这样。

关于php - php 中的正则表达式用于验证模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38472587/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com