Regex 仅当存在字符时,才可以成功使用正则表达式
我试图构造一个简单的正则表达式来检测URL。我的进度是这个正则表达式: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
^((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个字母。请编辑您的答案以与您的评论完全匹配。你的答案中有一些未被替换的字符。