gpt4 book ai didi

javascript - url 验证正则表达式将电子邮件地址识别为 url

转载 作者:行者123 更新时间:2023-12-03 08:40:04 24 4
gpt4 key购买 nike

我必须识别某些文本中的网址。我使用以下代码(this.value 是文本):

if (new RegExp("([a-zA-Z0-9]+://)?([a-zA-Z0-9_]+:[a-zA-Z0-9_]+@)?([a-zA-Z0-9.-]+\\.[A-Za-z]{2,4})(:[0-9]+)?(/.*)?").test(this.value)) {
alert("url inside");
}

将电子邮件地址识别为网址的问题。我该如何预防?

最佳答案

表达式/[a-zA-Z0-9_]//\w/i相同。

原始正则表达式匹配文本中的“domain.org”子字符串,例如“text name@domain.org text mailto:name@domain-2.org text”。要解决此问题,请在正则表达式的开头添加 (?:^|[^@\.\w-]) - 子字符串应该位于行的开头,或者不应以字符 ' 开头@'、'.'、'-'、'\w'。

要排除“mailto:user@...”子字符串,表达式 ([a-zA-Z0-9_]+:[a-zA-Z0-9_]+@)? 应该被修改。因为 Javascript RegExp 没有后向表达式,所以排除“mailto”的唯一方法是使用前向表达式 \w(?!ailto:)\w+:,但所有子字符串如“[ a-zA-Z0-9_]ailto:...@..."也将被排除。

要从匹配中排除“text user.name@domain.org text”等文本中的子字符串“user.name”,请添加表达式 (?=$|[^@\.\w-]) 位于正则表达式的末尾 - 仅当行尾跟在子字符串后面或者后面的字符“@”、“.”、“-”、“\w”不跟在子字符串后面时才匹配子字符串。

var re = /(?:^|[^@\.\w-])([a-z0-9]+:\/\/)?(\w(?!ailto:)\w+:\w+@)?([\w.-]+\.[a-z]{2,4})(:[0-9]+)?(\/.*)?(?=$|[^@\.\w-])/im;

//if (re.test(this.value)) {
// alert("url inside");
//}

var s1 = "text name@domain.org name.lastname@domain-2.org text mailto:user.name@domain-3.org text";
if (re.test(s1)) {
alert("Failed: text without URL");
}

var s2 = "text http://domain.org/ text";
if (!re.test(s2)) {
alert("Failed: text with URL");
}

alert("OK");

关于javascript - url 验证正则表达式将电子邮件地址识别为 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33062725/

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