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

JavaScript正则表达式:查找包含(at)的字符串(@替代格式)

解决匹配含"(at)"替代@的邮箱地址问题

我来帮你搞定这个需求!你已经有了匹配标准邮箱的正则,只需要把其中的@替换成转义后的\(at\)(因为括号在正则里是特殊字符,必须转义才能匹配字面量),就能精准定位到用(at)替代@的邮箱格式了。

修改后的正则表达式

/([a-zA-Z0-9._-]+\(at\)[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi
  • \(at\):转义括号,匹配字面量(at)
  • 保留原正则的用户名、域名规则,确保符合邮箱的结构逻辑
  • gi修饰符:g表示全局匹配所有结果,i表示忽略大小写(如果不需要忽略大小写,去掉i即可)

完整使用示例

const myString = "需要处理的字符串:account(at)example.com,还有test_user(at)sub.domain.org,普通邮箱user@example.net不会被匹配";
const targetRegex = /([a-zA-Z0-9._-]+\(at\)[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi;
// 用match匹配,加|| []避免匹配不到时返回null
const gathering = myString.match(targetRegex) || [];

console.log(gathering);
// 输出结果:["account(at)example.com", "test_user(at)sub.domain.org"]

为什么你之前的正则无法工作?

你之前写的/(^|\.\s+)((at)[^.]*\.)/g存在几个问题:

  • 匹配范围太窄:只限定了开头或者. 之后的内容,无法匹配字符串中间的目标邮箱
  • 结构不完整:只匹配了(at)加部分内容,没有覆盖完整的邮箱域名后缀,所以拿不到完整的account(at)example.com这类字符串

额外提示

如果你的字符串里(at)可能有其他写法(比如带空格的( at )),可以稍微调整正则,比如把\(at\)改成\(\s*at\s*\),这样就能匹配带空格的变体了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:03:48