正则表达式检查字符串是否是逻辑表达式

时间:2014-05-15 12:20:07

标签: php regex preg-match

我想要一个只检查包含逻辑表达式的正则表达式:0-9 == || !=&&等...

这是我到目前为止的尝试:

/^([ \-+><0-9])|(&&)|(==)|(\x7C\x7C)|(!=)|(<=)|(>=)$/i

我不确定它是如何工作的

http://regex101.com/r/xE4fY3

3 个答案:

答案 0 :(得分:3)

您只需为整行匹配一个表达式,请尝试以下操作:

/^(([ \-+><0-9])|(&&)|(==)|(\x7C\x7C)|(!=)|(<=)|(>=))+$/i

答案 1 :(得分:2)

我创建了this little fella

^\h*(\-?)([0-9]+)\h*(&&|==|\x7C\x7C|!=|<=|>=)\h*([0-9]*)$

\h*是可选的空格(空格,制表符)。

然后,下一个/ 第一个部分应该是麻木(对吗?)。

至少一个号码。可选择否定或肯定。

后面跟着更多可选的空格。

随后是可选的逻辑运算符。

后跟一个数字。

答案 2 :(得分:2)

与Andresch Serj解决方案没有太大区别,这是一个冗长的版本(可读且可编辑):

$pattern = '~
    # subpattern definitions
    (?(DEFINE)
        (?<operator> && | [!<>=]?= | \x7C\x7C | [+-<>] )
        (?<operand> -?[0-9]+ )
    )

    # main pattern
    ^ \h* \g<operand> \h* (?: \g<operator> \h* \g<operand> )* \h* $
    ~x';