ここで正規表現は何をテストしますか?
function chksql(){
if (/^\s*(?:delete|drop|truncate|alter)/.test(v)) return false;
}
正規表現が混在していることは知っていますが、それが何を意味するのかわかりません。
ここで正規表現は何をテストしますか?
function chksql(){
if (/^\s*(?:delete|drop|truncate|alter)/.test(v)) return false;
}
正規表現が混在していることは知っていますが、それが何を意味するのかわかりません。
v
これは、ゼロ個以上の空白文字で始まり、その後に削除、削除、切り詰め、または変更が続く文字列であるかどうかをチェックすることを意味します
したがって、これv
が" alter"
false を返す場合。
ドキュメントを参照してください: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
クライアント側でこれが起こっていることをチェックするのは本当に悪い考えだと付け加えておきます。回避されます。
最近では、正規表現をテストおよび調査するための優れたオンライン ツールが多数あります。
私が気に入っているのはdebuggex.comです。正規表現で表示される内容は次のとおりです。
^\s*(?:delete|drop|truncate|alter)
^
それを解釈するには、何を意味するかを調べるなどの宿題を少し行う必要があります\s
が、「鉄道図」は、正規表現が何をテストしているかを示すのに役立ちます。行に従って、何が一致するかを確認してください。上記のリンクでテスト文字列を入力して、どのように一致するか (または一致しないか) を確認することもできます。
別の優れたサイトはregex101.comです。これが正規表現です。正規表現が探しているものを英語で説明します。
また、クライアントで SQL をサニタイズしようとすることについての mkoryak のアドバイスに注意してください!