如何在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
相关产品推荐
相关产品推荐

