这个Javascript语句(正则表达式)是什么意思?

时间:2013-10-03 04:36:29

标签: javascript regex

RegEx在这里测试什么?

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

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

2 个答案:

答案 0 :(得分:5)

表示检查v是否为以零个或多个空格字符开头的字符串,后跟删除删除截断< / strong>或更改

因此如果v" alter",则会返回false。

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

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

答案 1 :(得分:2)

目前,有很多很好的在线工具可用于测试和探索正则表达式。

我喜欢的是debuggex.com。以下是它为正则表达式显示的内容:

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

Regular expression visualization

Debuggex Demo

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

另一个好网站是regex101.com。这是your regular expression there。它们为您提供正则表达式所需内容的英文描述。

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

enter image description here