簡體   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