使用RegExp构造函数结果到错误的输出

时间:2018-07-04 11:46:40

标签: javascript regex

我有一个正则表达式,用于电子邮件地址验证。它可以用作文字表达式,但在使用RegExp构造函数时显示不同的结果。

var emailpattern=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/g;

console.log(emailpattern.test('nithin@gmail.com'))//true

var obj = new RegExp('^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$','g');

console.log(obj.test('nithin@gmail.com'))//false

1 个答案:

答案 0 :(得分:1)

您需要删除在add_action()中指定的模式的引号,以消除转义wp_set_post_terms()字符的额外开销:

new RegExp()

转义\字符:

var emailpattern=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/g;

console.log(emailpattern.test('nithin@gmail.com'))//true

var obj = new RegExp(/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,'g');

console.log(obj.test('nithin@gmail.com'))//false