/^[_a-z0-9]+(\.[_a-z0-9]+)*[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,7})$/
这就是模式。当它正确时它会说“ok”,而当它不正确时它会说“不正常”。所以它在www.google.com上说“ok”,但在我输入http://www.google.com
时“不行”我想要的是这种模式允许http://,但它永远不应该是一个要求。
答案 0 :(得分:1)
你可以使用以下正则表达式,我从<{3}}的文档借用解除(逃避我的斜线)。
/(?:([^:\/?#]+):)?(?:\/\/([^\/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?/
它将为您提供捕获组中URI的所有不同部分。
这些部分是:
请参阅Perl module URI on CPAN进行试用。
另请注意,这将解析所有类型的URI,而不仅仅是http(s)。所以像https://regex101.com/r/vS5qO1/1这样的东西也可以。
答案 1 :(得分:1)
如果你只想 允许http / https URL方案(当提供方案时),对正则表达式的以下修改将起到作用:
/^(http:\/\/|https:\/\/)?[_a-z0-9]+(\.[_a-z0-9]+)*[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,7})$/
您可以使用我的答案作为如何将url方案组添加到现有正则表达式的示例,但可以使用@simbabque,因为他有更完整的答案。