尝试在电子邮件字段中的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中删除尾部斜杠?
答案 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');