我如何在php中使用正则表达式验证if语句的语法

时间:2016-02-02 18:17:39

标签: php regex

我有一个字符串输入,我想检查这个字符串是否包含if语句的正确语法。并提取它的每一部分。

字符串格式:

if(D1[Condition]D2)str1:str2

" 如果"不应该是区分大小写的 D1 D2 应为数字
条件应为以下之一> < > =< = ==!=

字符串示例:

$example   = "if(54>52)14:0";
$example   = "If(54==52)dsfd:fsde";  

我使用了这个正则表达式,但我不擅长使用正则表达式而且我不知道它是否好。

if\(\d+(==|<=|>=|>|<|!=)\d+\).+:.+

我想提取D1,D2,Condition,str1,str2

3 个答案:

答案 0 :(得分:1)

试试这个!

^if\((\d+)(>|<|>=|<=|==|!=)(\d+)\)(\w{1,50})\:(\w{1,50})

Firechat documentation

答案 1 :(得分:1)

这个正则表达式应该有效:

/^if\(\d+([<>=!]=|[<>])\d+\).{1,50}:.{1,50}$/i

这不敏感地匹配if(,然后是数字,然后是任何或您的运算符,然后是数字,然后是),然后是最多50个字符的字符串,然后是:,然后是一串最多50个字符。

答案 2 :(得分:1)

在这里,你有

/^If\s*\((\d+)\s*(==|<=|>=|>|<|\!=)\s*(\d+)\)\s*(\w{1,50})\:(\w{1,50})$/i

https://regex101.com/r/jR0bO1/1

我已经在某些地方添加了可选空格,您可以在其他括号之前和之后添加更多空格。 \ w不允许字符串中的空格。你可以用它们替换它们。允许任何你想要的东西