新的正则表达式()添加尾部斜杠

时间:2017-02-16 11:15:15

标签: javascript regex

尝试在电子邮件字段中的js中执行regexp。 这就是我到目前为止所做的:

 var regex      = '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,16}?$/g',
 emailRegex     = new RegExp(regex);

如果我在console.log()中返回emailRegex:

/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,16}?$\/g/

我想要的是:

/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,16}?$/g

现在它返回电子邮件无效错误。使用https://regex101.com/与我想要的正则表达式(没有尾随斜杠)一起工作,使用在console.log()中返回的regexp表示不匹配。

如何从RegExp中删除尾部斜杠?

2 个答案:

答案 0 :(得分:4)

/regularexpression/flags格式是正则表达式的文字格式;如果您正在使用RegExp构造函数,则不要使用它;相反,您使用两个离散的字符串:new RegExp("regularexpression", "flags")

所以:

var regex      = '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,16}?$',
emailRegex     = new RegExp(regex, "g");

当然,在这种情况下,不需要new RegExp

var emailRegex = /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,16}?$/g;

答案 1 :(得分:1)

要向文字正则表达式添加标记,您需要使用/文字形式:

var r = /matching/g;

除非明确使用RegExp构造函数,否则在通过字符串创建时不能提供标志:

var r = new RegExp('matching', 'g');