I am trying to use a regex to validate a string. It should allow white spaces between a string and a booleaen operator like (@string1 OR), but disallow white spaces in between strings like (string 1). Other boolean logics allowed are:
(A AND B) AND (NOT C)
(A OR B) AND (NOT C)
(A AND B)
(A OR B)
(NOT C)
Examples of possible valid and invalid inputs are below.
Valid:
(@string1 OR @string2) AND ( NOT @string3)
(@string-1 AND @string.2) AND ( NOT @string_3)
(@string1 OR @string2 OR @string4) AND ( NOT @string3 AND NOT @string5)
(@string1 OR @string2 OR @string4)
(@string1 AND @string2 AND @string4)
( NOT @string1 AND NOT @string2 AND NOT @string4)
( NOT @string1 AND NOT @string2)
Invalid:
()
(string 1 OR @str ing2) AND ( NOT @tag3)
(@string 1 OR @tag 2) AND ( NOT @string 3)
(@string1 @string2) ( NOT @string3)
(@string1 OR @string12) AND (@string3)
(@string1 AND NOT @string2)
Is it better to parse the string and then have multiple regexes check for the absence of whitespaces, or can a regex be written to check the entire string?
(...), correct?