gpt4 book ai didi

javascript - 使用 JavaScript 获取字符串中的所有电子邮件地址

转载 作者:行者123 更新时间:2023-11-30 07:29:30 24 4
gpt4 key购买 nike

所以,我有这个 JavaScript 函数:

ME.Utils = {
RxEmail: new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i),

ValidateEmail: function(email) {
return ME.Utils.RxEmail.test(email);
},

GetEmailAddresses: function(text) {
return text.match(ME.Utils.RxEmail);
},

HasEmail: function(text) {
return ME.Utils.GetEmailAddresses != null;
}
};

ValidateEmail 效果很好。但是,HasEmailGetEmailAddresses 无法正常工作。

GetEmailAdresses 始终返回 null,除非字符串仅包含电子邮件地址。在这种情况下,GetEmailAdresses 返回一个数组,不仅包含电子邮件地址,还包含电子邮件地址 (test@test.com),只是 id (test) 加上一些未识别的等等......

你能帮我看看我的表情有什么问题吗?

最佳答案

有几个问题。

  1. 您的正则表达式锚定在字符串的开头和结尾。您应该从中删除 ^$ 字符。

  2. 如果您只想返回电子邮件地址,请使用非捕获组。

  3. HasEmail() 中,您没有调用 GetEmailAddresses()。您实际上是在检查该属性的值是否已定义。

总而言之,固定版本可能如下所示:

ME.Utils = {
RxEmail: /(?:(?:"[\w-\s]+")|(?:[\w-]+(?:\.[\w-]+)*)|(?:"[\w-\s]+")(?:[\w-]+(?:\.[\w-]+)*))(?:@(?:(?:[\w-]+\.)*\w[\w-]{0,66})\.(?:[a-z]{2,6}(?:?:\.[a-z]{2})?))|(?:@\[?(?:(?:25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?)/gi,

ValidateEmail: function(email) {
// We can't do a simple test() since we're using an unanchored regex now.
var match = ME.Utils.RxEmail.match(email);
return match.length == 1 && match[0] == email;
},

GetEmailAddresses: function(text) {
return text.match(ME.Utils.RxEmail);
},

HasEmail: function(text) {
return ME.Utils.GetEmailAddresses(text) != null;
}
};

关于javascript - 使用 JavaScript 获取字符串中的所有电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2779465/

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