Jquery正则表达式

时间:2012-02-02 10:21:54

标签: javascript jquery

我想在我的SQL中搜索一个特定的模式,这样它只能用SELECT启动而不能用INSERT,UPDATE,DELETE启动。

我如何使用JQuery实现这一点,我想使用JQuery对字符串进行不区分大小写的匹配。

修改

我也想考虑子查询。

因此我的要求是查询不应该在任何地方包含任何INSERT,UPDATE,DELETE语句。 它应该只包含SELECT语句

2 个答案:

答案 0 :(得分:1)

您可以使用以下内容:

function isSelect(str) {
    return /^select/i.test(str) && !/insert|update|delete.*/.test(str);
}

isSelect("select * from foo"); // true
isSelect("SELECT id, name from foo");  // true
isSelect("update ..."); // false
isSelect("DELETE ..."); // false

答案 1 :(得分:1)

我将使用白名单,而不是黑名单:

function isValidQuery(str) {
  return /^select\s+([a-z_*]+,?)+\s+from\s+[a-z_]+$/i.test(str);
}

这仅匹配SELECT field, [field, ...] FROM table形式的查询。这也可以扩展为允许某些类型的WHEREGROUP BY说明符。如果这还不够,您还可以使用更严格的黑名单:

function isValidQuery(str) {
  if (/delete|update|insert|truncate|create|drop/i.test(str)) return false;
  // possibly more excluding rules...
  return true;
}

如果你想用这个来保护你的数据,我当然不会依赖第二种方法,因为它可能被规避(你忘记了一个危险的命令,SQL走私,......)A 很多< / em>更好的方法是创建一个专用数据库用户,该用户只能通过此接口对您希望可用的表具有读访问权。