为了账号安全,请及时绑定邮箱和手机立即绑定

javascript 使用 new RegExp 创建正则表达式?

/ 猿问

javascript 使用 new RegExp 创建正则表达式?

慕的地6264312 2019-02-14 15:11:11

下面是设置用户代码为字母数字组合,并且4~6位,
测试正确的是:var re = new RegExp(/^[a-zA-Z0-9]{4,6}$/);
为什么下面几种是错误的?
var reg = new RegExp("/^[a-zA-Z]\w+@\w+\.com$/");
var reg = new RegExp("^[a-zA-Z]\w+@\w+\.com$");
var reg = new RegExp("[a-zA-Z]\w+@\w+\.com");
使用new RegExg的语法不是:re = new 
RegExp("pattern",["flags"]) 吗?这个是从帮助手册上看到到
为什么这几个加分号就不正确,而不加分号才是正确的?

查看完整描述

4 回答

?
慕斯王

new RegExp的时候\w \.这样的要用两个反斜杠,即\\w, \\.

因为字符串里反斜杠是转义字符,\w会变成w。

"^[a-zA-Z]\w+@\w+\.com$" == "^[a-zA-Z]w+@w+.com$"

查看完整回答
反对 回复 2019-03-26
?
慕哥6287543

问题不在分号,在引号,Js做正则的时候,正斜线是用来表达正则了,不需要额外加引号,否则会被误识别的吧
后两句没有斜线,是不会识别为pattern的

查看完整回答
反对 回复 2019-03-26
?
斯蒂芬大帝
1234var re=new RegExp("abc","g");//用构造函数创建,匹配模式放在“”内就行了var re=/abc/g;     //字面量创建就是这样的   准确来说,你测试正确的也是错误的写法


查看完整回答
反对 回复 2019-03-26
?
慕的地10843

要么你就写成这样var reg = /^[a-zA-Z]\w+@\w+\.com$/;

要么就把你的var reg = new RegExp("/^[a-zA-Z]\w+@\w+\.com$/");里面的'/'去掉!

查看完整回答
反对 回复 2019-03-26

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信