这个Javascript语句(正则表达式)的含义是什么?

6
这里的正则表达式测试什么?
function chksql(){    
  if (/^\s*(?:delete|drop|truncate|alter)/.test(v)) return false;    
}

我知道它与正则表达式相关,但无法弄清楚它的含义。


更多关于正则表达式的信息请参见此处 - aug
请提供一个能够执行此操作的网站链接,因为在客户端检查这些内容是一种等待发生“删除表”操作的风险。 - mkoryak
嗯,至少这段代码会让它变得更难。你可能需要说DROP TABLE!just_a_newbie,我在这里所指的是这个正则表达式只匹配小写单词,但是SQL关键字是大小写无关的,事实上传统上是用大写字母书写的。 - Michael Geary
2个回答

5

2

如今有许多优秀的在线工具用于测试和探索正则表达式。

我喜欢的一个是debuggex.com。以下是它针对你的正则表达式显示的内容:

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

正则表达式可视化

Debuggex演示

要解释它,您仍需要做一些功课,例如找出^\s的含义,但“铁路图”有助于显示正则表达式正在测试什么。只需沿着线条走即可查看它将匹配什么。您还可以尝试在上面的链接中输入测试字符串,以了解它如何匹配(或不匹配)它们。

另一个好网站是regex101.com。这里是您的正则表达式。他们会给您一个英文描述,说明正则表达式正在寻找什么。

此外,请注意mkoryak关于尝试在客户端对SQL进行消毒的建议!

输入图像描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接