RegEx 在这里测试什么?
function chksql(){
if (/^\s*(?:delete|drop|truncate|alter)/.test(v)) return false;
}
我只知道它与正则表达式混合,但无法弄清楚它的含义。
RegEx 在这里测试什么?
function chksql(){
if (/^\s*(?:delete|drop|truncate|alter)/.test(v)) return false;
}
我只知道它与正则表达式混合,但无法弄清楚它的含义。
这意味着它检查是否v
是一个以零个或多个空格字符开头的字符串,然后是delete或drop或truncate或alter
所以如果这v
将" alter"
返回错误。
请参阅文档:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
我应该补充一点,在客户端检查这种情况是一个非常糟糕的主意。它会被规避。
现在有很多很好的在线工具可以用来测试和探索正则表达式。
我喜欢的一个是debuggex.com。这是它为您的正则表达式显示的内容:
^\s*(?:delete|drop|truncate|alter)
要解释这一点,您仍然需要做一些功课,例如找出什么^
和\s
意思,但是“铁路图”有助于显示正则表达式正在测试的内容。只需按照线条来看看它会匹配什么。您还可以尝试在上面的链接中输入测试字符串,看看它如何匹配(或不匹配)它们。
另一个不错的网站是regex101.com。这是你的正则表达式。它们为您提供正则表达式要查找的内容的英文描述。
另外,请注意 mkoryak 关于尝试清理客户端上的 SQL 的建议!