这里的RegEx测试是什么?这个Javascript语句(正则表达式)是什么意思?
function chksql(){
if (/^\s*(?:delete|drop|truncate|alter)/.test(v)) return false;
}
我只知道它与正则表达式混合在一起,但无法弄清楚它的含义。
这里的RegEx测试是什么?这个Javascript语句(正则表达式)是什么意思?
function chksql(){
if (/^\s*(?:delete|drop|truncate|alter)/.test(v)) return false;
}
我只知道它与正则表达式混合在一起,但无法弄清楚它的含义。
这意味着它检查是否v
是与零个或多个空格charcters其次删除或下降或截断开头的字符串或改变
所以如果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。这里是your regular expression there。他们给你一个关于正则表达式正在寻找的英文描述。
另外,希望mkoryak的建议,试图消毒客户端上的SQL!正则表达式
更多信息[这里](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions) – aug
请链接做这个网站,因为在客户端检查这个垃圾是一个等待发生的“drop table” – mkoryak
好吧,至少这个代码会让它更难一点。您可能不得不说“DROP TABLE”! just_a_newbie,我在这里指的是这个正则表达式只匹配*小写*字,但是SQL关键字是大小写独立的,事实上传统上是用大写字母写的。 –