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

下面是设置用户代码为字母数字组合,并且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"]) 吗?这个是从帮助手册上看到到
为什么这几个加分号就不正确,而不加分号才是正确的?

慕的地6264312
浏览 2148回答 4
4回答

慕斯王

new RegExp的时候\w \.这样的要用两个反斜杠,即\\w, \\.因为字符串里反斜杠是转义字符,\w会变成w。"^[a-zA-Z]\w+@\w+\.com$" == "^[a-zA-Z]w+@w+.com$"

慕哥6287543

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

斯蒂芬大帝

1234var re=new RegExp("abc","g");//用构造函数创建,匹配模式放在“”内就行了var re=/abc/g;     //字面量创建就是这样的   准确来说,你测试正确的也是错误的写法
打开App,查看更多内容
随时随地看视频慕课网APP