私は、SQLのwhere節にかなり近いところにユーザー入力の検証ロジックを取り入れています。ユーザーがドロップダウンの組み合わせから選択することができますページでwhere句に「よく似ている」データの妥当性確認
(「 - 」文字が最終節で、空白文字を表します):
DropDown1 DropDown2 DropDown3 DropDown4 DropDown5 DropDown6
- - - - - -
( SomeCriteria = Value ) AND
<> OR
残念ながら、私は上の任意のハード要件はありません。それは少数のその寿検証に
(Criteria = Value)
(criteria1 = Value1 OR Criteria2 <> value2)
(criteria1 = value1) AND (Criteria2 = value2)
(criteria1 = value1) OR (Criteria2 = value2 AND criteria3 = value3)
を渡すべきである:(
数「節のSQLのように振る舞う」すべきである以外に、この句を検証する方法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パーサを話す人がこの '制限された' where節のより良い解決策になると思っています。
ユーザーは、「行」ごとにカスタムの値と基準を入力しますか?あるいは、あらかじめ定義された値/基準のリストから選択するだけですか? – BumbleB2na
問題にさらに制約を加えない限り、正規表現はブラケットのバランスを検証できません – Neowizard
ああ、ブラケットが必要なことを意味しています。あなたはここでも正規表現は必要ありません。 – BumbleB2na