javascript - Jquery 正则表达式

标签 javascript jquery

我想在我的 SQL 中搜索特定模式,以便它仅以 SELECT 开头,而不以 INSERT 、 UPDATE 、 DELETE 开头。

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

编辑

我也想考虑子查询。

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

最佳答案

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

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走私,......)很多 更好的方法是创建一个专用数据库用户,该用户仅对您希望通过此接口(interface)可用的表具有读取访问权限。

关于javascript - Jquery 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9110622/

相关文章:

javascript - 模式中显示的文本问题

javascript - 条件 .then 执行

javascript代码错误显示未定义的值

javascript - keydown 不会在移动设备上触发 Chrome

jquery - 可使用掩码调整大小的 jQuery UI 问题

Javascript - 获取输入 onclick 的更改值

javascript - 为禁用的元素停止事件冒泡

javascript - 令人困惑的 webpack/ES6 项目设置

javascript - Bootstrap datetimepicker 返回未定义的值

Javascript 超时