我正在將用戶輸入的驗證邏輯工作到非常接近sql where子句的地方。「非常相似」的數據驗證where條款
在頁面上,用戶可以從下拉菜單中的組合選擇(其中「 - 」字符表示最終子句中空白字符):
DropDown1 DropDown2 DropDown3 DropDown4 DropDown5 DropDown6
- - - - - -
( SomeCriteria = Value ) AND
<> OR
不幸的是,我沒有任何硬要求如何驗證等這一條款比它應該「像一個SQL WHERE子句」 :(
一些應該通過驗證的
(Criteria = Value)
(criteria1 = Value1 OR Criteria2 <> value2)
(criteria1 = value1) AND (Criteria2 = value2)
(criteria1 = value1) OR (Criteria2 = value2 AND criteria3 = value3)
幾個是守ld驗證失敗:
)Criteria = value) (first character is not '(')
(Criteria = value( (last character is not ')')
((Criteria = value) (# of '(' does not match # of ')')
(Criteria = Value (AND Criteria1 = value1)) ('AND' and 'OR' should not be immediately preceded or followed by a '(' or ')' character.
任何有關編寫正則表達式來驗證這些選擇的幫助都將得到真正的讚賞。在我看到其他人談論過一個SQL解析器之後,對於這個'restricted'where子句,這會是一個更好的解決方案嗎?
用戶是否要輸入每個「行」的自定義值和標準?或者他們只是從預定義的值/標準列表中進行選擇? – BumbleB2na
沒有正則表達式可以驗證括號的平衡,除非你對問題增加了更多的限制 – Neowizard
噢好吧,我明白你的意思是需要括號。儘管這裏你不需要正則表達式。 – BumbleB2na