验证可以出现在if语句中的语句

时间:2018-03-26 16:13:23

标签: javascript regex

如何验证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

但未能这样做。有人可以对这个话题有所了解吗?

1 个答案:

答案 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*/会检测到这些问题。如果你想超越它并检查非法比较运算符,你可以沿着这些行做一些事情。