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

Postgres正则表达式符号匹配问题:校验邮箱非法字符时报错

解决PostgreSQL中SIMILAR TO正则表达式报错的问题

这个报错ERROR: invalid regular expression: quantifier operand invalid是因为你的正则表达式里有未正确转义的量词元字符,比如+、*、?——这些在SIMILAR TO语法里是特殊量词符号,直接写会被解析为正则规则,而不是你要匹配的字面字符。另外你表达式里的&是HTML转义字符,在SQL语句里应该直接写&。

修正后的SIMILAR TO语句

把需要匹配的字面量词和特殊字符转义后,正确的语句应该是:

var_EmailAddress NOT SIMILAR TO '%( &|,|"|#|:|;|%|$|^|~|!|`|\?|<|>|\+|=|\\|/|\*)%'

我做了这些关键调整:

  • 将&amp;替换为&(SQL中不需要HTML转义,直接写原字符即可)
  • 给+、*、?加上反斜杠转义(\+、\*、\?),让PostgreSQL把它们当作普通字符匹配
  • 把\转义为\\(SQL字符串里需要双反斜杠来表示一个字面反斜杠)

更简洁的替代方案:使用POSIX正则操作符!~

PostgreSQL里更常用也更直观的正则匹配是用~(匹配)和!~(不匹配)操作符,用字符类来简化你的规则,这样不需要转义这么多字符:

var_EmailAddress !~ '[ &,"#:;%$^~!`?<>+=\\/*]'

这个语句的逻辑和你原来的需求完全一致:只要邮箱地址不包含方括号里的任何非法字符,就返回true。字符类里的大部分特殊字符不需要额外转义,只需要把\写成\\即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:21:19