gpt4 book ai didi

javascript - 我应该如何转义这个 JavaScript 正则表达式(RFC 2822 电子邮件验证器)

转载 作者:行者123 更新时间:2023-12-02 19:55:16 25 4
gpt4 key购买 nike

我有这个正则表达式:

/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/

我像这样转义斜杠:

/[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/

这似乎工作正常,但我担心我错过了一个边缘情况,并且正则表达式因这样做而被破坏。这是转义斜杠的正确方法吗?

或者我应该像这样用 new 声明:

var re = new RegExp(/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/);

JavaScript 可以正确执行,无需转义斜杠(在 Chrome 中),但它与我的编辑器(TextMate)的语法突出显示相混淆。经过进一步测试,即使 new 也无法消除语法突出显示问题。

最佳答案

在 JavaScript 正则表达式中转义正斜杠的正确方法是使用反斜杠:

// unescaped:
some/string
// escaped in regex literal:
/some\/string/

据我所知,没有任何边缘情况,如果不这样做,您应该会收到错误。

当您使用 new RegExp() 时,您应该向其传递一个字符串,而不是正则表达式对象,也就是说您应该使用形式 new RegExp("/[a- z0- etc") - 这应该修复语法突出显示,但当然请注意,字符串文字也有需要转义的字符,包括所有反斜杠。考虑到在正则表达式中使用反斜杠的频率,这意味着字符串形式非常难看,因此通常仅在需要动态构建正则表达式的情况下使用它。

关于javascript - 我应该如何转义这个 JavaScript 正则表达式(RFC 2822 电子邮件验证器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8753764/

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