You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写正则表达式检查SQL查询中所有cast()均带safe_前缀

检查SQL中cast()是否必须以safe_为前缀的正则方案

嘿,作为正则表达式新手,要搞定这个SQL检查需求其实很直观!我来一步步给你拆解怎么做:

核心正则表达式

首先直接给你能用的基础版正则:

\b(?!safe_)cast\(

如果需要忽略大小写(毕竟SQL里关键字大小写不敏感),就用这个适配版:

(?i)\b(?!safe_)cast\(

正则各部分解释

  • \b:单词边界,确保我们匹配的是独立的cast,不会误匹配比如mycast(这种包含cast的自定义函数名
  • (?!safe_):负向前瞻断言,意思是“当前位置的前面不能是safe_”,完美排除了合法的safe_cast(
  • cast\(:精准匹配cast((括号要转义,因为正则里括号有特殊含义)
  • (?i):不区分大小写标志,让正则能匹配CAST(、Cast(等各种大小写写法的非法调用

用法示例

在VS Code、Sublime Text这类支持正则搜索的编辑器里,把这个正则贴到搜索框,就能快速定位所有不符合要求的cast():

  • 会被匹配(需要修改的非法调用):
    • cast(user_id as STRING)
    • CAST(created_at AS DATE)
    • Cast(total as NUMERIC)
  • 不会被匹配(合法的调用):
    • safe_cast(user_id as STRING)
    • SAFE_CAST(created_at AS DATE)
    • Safe_Cast(total as NUMERIC)

进阶提示(可选)

如果你的SQL里有注释,不想把注释里的cast()当成非法调用,这个正则会稍微复杂一点,但新手可以先从基础版用起——等你熟悉正则后,再考虑加入排除注释的逻辑。

内容的提问来源于stack exchange,提问作者whdgns0665

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:11:17