gpt4 book ai didi

javascript - 使用 RegExp 构造函数导致错误的输出

转载 作者:行者123 更新时间:2023-12-03 01:33:44 24 4
gpt4 key购买 nike

我有一个用于电子邮件地址验证的正则表达式。它作为文字表达式工作正常,但在使用 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

最佳答案

您需要删除在 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

转义 \ 字符:

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

关于javascript - 使用 RegExp 构造函数导致错误的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51172933/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com