这里的正则表达式测试什么?
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
是否为一个以零个或多个空格字符开头的字符串,后面跟着delete、drop、truncate或alter。如果v
的值是" alter"
,这将返回false。如今有许多优秀的在线工具用于测试和探索正则表达式。
我喜欢的一个是debuggex.com。以下是它针对你的正则表达式显示的内容:
^\s*(?:delete|drop|truncate|alter)
要解释它,您仍需要做一些功课,例如找出^
和\s
的含义,但“铁路图”有助于显示正则表达式正在测试什么。只需沿着线条走即可查看它将匹配什么。您还可以尝试在上面的链接中输入测试字符串,以了解它如何匹配(或不匹配)它们。
另一个好网站是regex101.com。这里是您的正则表达式。他们会给您一个英文描述,说明正则表达式正在寻找什么。
此外,请注意mkoryak关于尝试在客户端对SQL进行消毒的建议!
DROP TABLE
!just_a_newbie,我在这里所指的是这个正则表达式只匹配小写单词,但是SQL关键字是大小写无关的,事实上传统上是用大写字母书写的。 - Michael Geary