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

如何在JavaScript中使用正则表达式?正则校验代码报错求助

解决JavaScript中使用邮箱正则表达式的报错问题

你遇到的报错核心原因有两个:

  • 你把正则表达式写成了普通字符串,而非JavaScript支持的正则表达式定义形式
  • 字符串中的反斜杠\未做转义——在JS字符串里\是转义字符,会被解析成特殊含义,直接导致正则的语法结构被破坏

方法1:使用正则字面量(推荐)

直接用/正则内容/的形式定义正则,不需要处理反斜杠转义,这是JS里最常用的正则写法:

const mystring = 'hello@world.com';
const re = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
if (mystring.match(re)) {
  console.log('true');
}

方法2:使用RegExp构造函数(字符串形式)

如果一定要用字符串来定义正则,必须把所有的\替换成\\——JS字符串里需要用两个反斜杠来表示一个实际的反斜杠:

const mystring = 'hello@world.com';
const re = new RegExp('^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$');
if (mystring.match(re)) {
  console.log('true');
}

额外说明

  • 正则字面量写法更简洁,也不容易出错,优先推荐
  • 你的这个正则用于校验邮箱格式,测试hello@world.com会返回true,符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:36:04