6

RegEx 在这里测试什么?

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

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

4

2 回答 2

5

这意味着它检查是否v是一个以零个或多个空格字符开头的字符串,然后是deletedroptruncatealter

所以如果这v" alter"返回错误。

请参阅文档:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

我应该补充一点,在客户端检查这种情况是一个非常糟糕的主意。它会被规避。

于 2013-10-03T04:39:42.567 回答
2

现在有很多很好的在线工具可以用来测试和探索正则表达式。

我喜欢的一个是debuggex.com。这是它为您的正则表达式显示的内容:

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

正则表达式可视化

调试演示

要解释这一点,您仍然需要做一些功课,例如找出什么^\s意思,但是“铁路图”有助于显示正则表达式正在测试的内容。只需按照线条来看看它会匹配什么。您还可以尝试在上面的链接中输入测试字符串,看看它如何匹配(或不匹配)它们。

另一个不错的网站是regex101.com。这是你的正则表达式。它们为您提供正则表达式要查找的内容的英文描述。

另外,请注意 mkoryak 关于尝试清理客户端上的 SQL 的建议!

在此处输入图像描述

于 2013-10-03T04:44:05.817 回答