首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >URL输入的Regex匹配

URL输入的Regex匹配
EN

Stack Overflow用户
提问于 2020-11-17 11:16:27
回答 4查看 127关注 0票数 1

如果包含协议(https://),和主机名(名称和扩展名,例如youtube.com) ),我将尝试为URL编写regex表达式。我已经包括了下面的regex 101链接。

在我苦苦挣扎的地方,我想要的是,而不是,只匹配'youtube‘,并且编写与https://作为一个组匹配的语法。对于双正斜杠或冒号,我无法正确地逃脱。

https://regex101.com/r/0KUyxu/5

代码语言:javascript
复制
/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9]|[https:\//])$/gm

它不应与以下内容相匹配:

代码语言:javascript
复制
youtube
https://youtube
www.youtube

然而,它应该匹配:

代码语言:javascript
复制
https://youtube.com
youtube.com
www.youtube.com
https://www.youtube.com

任何帮助都将不胜感激,谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-11-17 11:30:56

您的regex看起来相当复杂,这应该很好:

^(https?:\/\/)?([0-z\-\.]+)\.([a-z]{2,})$

你还会有:

  • 第1组→协议
  • 第2组→域名
  • 第3组→域扩展

编辑

要处理不应该与www.domainname匹配的情况,可以使用下面这样的负面查找:

^(https?:\/\/)?([0-z\-\.]+)(?<!www)\.([a-z]{2,})$

在这里,测试人员:https://regex101.com/r/0KUyxu/8

票数 1
EN

Stack Overflow用户

发布于 2020-11-17 11:42:37

在镀铬控制台中测试。

我不能完全按照你的要求做一些与此相关的事情(我想是的!)

代码语言:javascript
复制
function urlRegexTest(testUrl) {
var expression = /(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,})/gi;
var regex = new RegExp(expression);
var url = testUrl;
console.log("URL ="+url);
var res = "";
if (url.match(regex)) {
    res = "Valid URL";
} else {
    res = "Invalid URL";
}
console.log(res);
}
代码语言:javascript
复制
Test inputs & outputs

urlRegexTest("godaddy.in") URL =godaddy.in无效网址

urlRegexTest("godaddy.com") URL =godaddy.com无效网址

urlRegexTest("www.godaddy.com") URL =www.godaddy.com有效网址

urlRegexTest("https://godaddy.com") URL =https://godaddy.com有效URL

urlRegexTest("http://godaddy.com") URL =http://godaddy.com有效URL

urlRegexTest("http://godaddy.in") URL =http://godaddy.in有效URL

urlRegexTest("http://sts.in") URL =http://sts.in有效URL

urlRegexTest("godaddy.in") URL =godaddy.in无效网址

urlRegexTest("https://godaddy.in") URL =https://godaddy.in有效URL

urlRegexTest("www.godaddy.in") URL =www.godaddy.in有效网址

您可以参考有关此问题的更多信息:- https://www.geeksforgeeks.org/how-to-validate-url-using-regular-expression-in-javascript/

票数 2
EN

Stack Overflow用户

发布于 2020-11-17 11:56:11

也许,对于示例数据,只需检查字符串是否以www.开头,并且不再包含点。

代码语言:javascript
复制
^(?!www\.[^.\r\n]*$)\S+\.[a-z]{2,}$

Regex演示

或者更具体一点,您可以使用字符类和

代码语言:javascript
复制
^(?!www\.[^.\r\n]*$)(?:https?://)?[a-zA-Z0-9]+(?:[.-][a-zA-Z0-9]+)*\.[a-z]{2,}$

解释

  • 字符串的^开始
  • (?!www\.[^.\r\n]*$)负前瞻,断言开始不以www.开始,不再有点
  • (?:https?://)?可选择匹配http、可选的s和://
  • [a-zA-Z0-9]+匹配1+字符类中列出的任何字符
  • (?:[.-][a-zA-Z0-9]+)*可选择地重复匹配.- (如果不可能,防止匹配连续的点和连字符)和1+会重复字符类中列出的任何字符。
  • \.[a-z]{2,}匹配.和两个或更多次字符a-z。
  • $字符串的结尾。

Regex演示

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64874195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档