2013-10-03 11 views
6

ここではRegExテストは何ですか?このJavascript文(正規表現)は何を意味しますか?

function chksql(){  
    if (/^\s*(?:delete|drop|truncate|alter)/.test(v)) return false;  
} 

私はそれが正規表現と混ざっていることを知っていますが、それが何を意味するのか分かりません。

+0

詳しい情報は[こちら](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions) – aug

+0

これを行うサイトをリンクしてください、クライアント側でこのくそをチェックすることが起こるのを待っている「ドロップテーブル」であるので、 – mkoryak

+0

ああ、少なくともこのコードでは少し難しくなります。代わりに 'DROP TABLE'と言う必要があります!私がここで言及しているのは、この正規表現が小文字の*単語と一致するだけですが、SQLキーワードは大文字小文字を区別せず、実際は大文字で書かれています。 –

答えて

5

それはv" alter"た場合は、この希望vに続くゼロ個以上の空白charctersで始まる文字列の場合またはドロップまたはTRUNCATEを削除し、そのチェックを意味したりそう

を変更falseを返します。私は、クライアント側でこの出来事に対してチェックすることが本当に悪い考えであることを追加する必要がありますhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

は、ドキュメントを参照してください。それは回避されるでしょう。

2

最近の正規表現のテストや探索には、数多くの優れたオンラインツールがあります。

好きな人はdebuggex.comです。あなたはまだ何を意味するか^\s見つけ出すように宿題のビットを行う必要がある、と解釈するには

^\s*(?:delete|drop|truncate|alter) 

Regular expression visualization

Debuggex Demo

、しかし:ここでは、それはあなたの正規表現のために表示されるものです"railroad diagram"は、正規表現が何をテストしているかを示すのに役立ちます。線に沿って、それが何を一致させるかを確認してください。上記のリンクでテスト文字列を入力して、それらがどのように一致するか(または一致しないか)確認することもできます。

もう1つの良いサイトはregex101.comです。ここにはyour regular expression thereがあります。彼らはあなたに正規表現が何を求めているのかを英語で説明します。

また、クライアントでSQLをサニタイズしようとすると、mkoryakのアドバイスを受けてください!正規表現の

enter image description here

関連する問題