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

如何用正则筛选含非标准字符的sales表email_address记录?

正确SQL解决方案

问题分析

原SQL语句存在几个核心错误:

  • 正则匹配逻辑错误:!~ '^[xxx]'仅判断字符串不以指定字符开头,而非检查是否包含非法字符;
  • 错误排除合规记录:AND email_addr !~ '[[alphanum]]'会剔除所有含字母数字的记录,而合规邮箱必然包含这类字符;
  • 字符范围不全:未覆盖带重音的Unicode字母(如á),且漏了允许的特殊字符~和'。

正确SQL语句

SELECT *
FROM db.sales
WHERE email_address ~ '[^\p{L}\p{N}~!@#$%^&*()_\-+={}\[\]|:";\'<>,.?/]';

语句说明

  1. 字符集定义:
    • \p{L}:匹配所有Unicode字母(包括带重音、波浪线的大小写字符,如á、ñ);
    • \p{N}:匹配所有数字;
    • 后续列出需求中允许的所有特殊字符,注意对正则特殊符号(如-、])进行转义。
  2. 匹配逻辑:
    • 字符集前加^表示取反,整个正则的意思是:字符串中存在任意一个字符不属于允许的范围(即包含表情、数学符号等非标准字符)。

验证案例

  • 合规记录(不会被筛选):<testemail123@email.me、'email@email.com、ábc@123.com;
  • 非法记录(会被筛选):test😀@email.com(含表情)、test∑@email.com(含数学符号)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 15:46:07