繁体   English   中英

PHP中的正则表达式以验证模式

[英]Regex in php to validate a pattern

我遇到了一些与正则表达式和模式有关的问题。 我的输入必须是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内部有逗号,在上下文中含义不同。

您正在寻找的RegExp是

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

你可以测试它并在这里

因此,名为foo的模式将您命名的AB概括foo \\w\\(\\w(,\\w)?\\) 然后,我们允许使用逗号分隔该模式。 而已。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM