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


How I can validate the syntax of if statement using regex in php

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

字符串格式:

if(D1[Condition]D2)str1:str2

"if"不应区分
大小写D1D2应该是数字
条件应为以下> <>之一= <= == !=

字符串示例:

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

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

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

我想提取 D1 ,D2 ,条件 , str1 , str2

这个正则表达式应该可以工作:

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

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

这里有它

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

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

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

试试这个!

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

https://regex101.com/r/qZ7oM7/2