Regex 仅当存在字符时,才可以成功使用正则表达式

Regex 仅当存在字符时,才可以成功使用正则表达式,regex,Regex,我试图构造一个简单的正则表达式来检测URL。我的进度是这个正则表达式: ^((https?:\/\/)?[\w.]*[\w]+\.[a-z]{3}\/?([\w\?\\\\\\.=-]+\/)*$但这实际上不是我想要的。 这可以检测URL,如: https://something.com www.stackoverflow.com subdomain.domain.com/something/photo.png 但这也能检测到 子域.域.通信 我的目标是: 域结尾必须有三个字符(.com、.or

我试图构造一个简单的正则表达式来检测URL。我的进度是这个正则表达式:
^((https?:\/\/)?[\w.]*[\w]+\.[a-z]{3}\/?([\w\?\\\\\\.=-]+\/)*$
但这实际上不是我想要的。 这可以检测URL,如:

https://something.com

www.stackoverflow.com

subdomain.domain.com/something/photo.png

但这也能检测到

子域.域.通信

我的目标是:

域结尾必须有三个字符(.com、.org、.net)。域结束后可以有
/
,也可以没有。但是如果只有一个
/
存在,它应该进一步研究正则表达式,否则它不应该匹配。它应该检测到:

https://somewebsite.com

https://somewebsite.com/

https://somewebsite.com/webpage/some#section

但不是:

https://something.commmm/

试试看


^(https?:\/\/)([\w]+\)+[a-z]{3}(\/[\w\?\\.=-]+)*\/?$

我建议您使用regex101.com测试正则表达式。请参考RFC1738中的
BNF部分了解具体的URL方案
。这个问题与
java
有什么关系?实际上,我必须在js和java中实现正则表达式。尽管如此,他还是去掉了标签,提出了这个问题specific@thesamiroli
子域.domain.communication
是有效的url。它不起作用的唯一原因是没有
通信
顶级域。@DominiqueFortin但是想要的是一个域结尾中应该有3个字母。请编辑您的答案以与您的评论完全匹配。你的答案中有一些未被替换的字符。