如何验证if语句中可能出现的语句?正则表达式是一个正确的工具吗?我尝试使用:
^((?:\w+(?:\s*)?(?:[!<>=]=?=?)(?:\s*))+\w+\s*(?:&&|\|\|)?\s*)+$
要测试的字符串:
Valid:
ds > 33
ds < dd
d >= 32
d >= d
ds <= dd
ds <= 2
ds == ds
ds === ds
ds != d
ds != 1
ds !== d
ds
!ds
ds > 32 && ds < 32
Invalid:
ds > 32 && ds < 32 ||
ds < dd && || ds < 22
但未能这样做。有人可以对这个话题有所了解吗?
答案 0 :(得分:0)
查看您的用例,我猜测您正在动态编写布尔表达式并担心空长度的参数。如果您确实想要编写某种类型的正则表达式,那么创建一个检测错误而不是验证正确的结构可能更有意义,如下所示:
(&&|\|\|)\s*(&&|\|\|): detect two boolean operators in sequence
(&&|\|\|)\s*$: boolean operator with nothing after it
^\s*(&&|\|\|): boolean operator with nothing before it
所以/(&&|\|\|)\s*(&&|\|\|)|(&&|\|\|)\s*$|^\s*(&&|\|\|)\s*/
会检测到这些问题。如果你想超越它并检查非法比较运算符,你可以沿着这些行做一些事情。