AngularJS ng-pattern网站模式

时间:2016-06-14 07:34:40

标签: angularjs regex

/^[_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://,但它永远不应该是一个要求。

2 个答案:

答案 0 :(得分:1)

你可以使用以下正则表达式,我从<{3}}的文档借用解除(逃避我的斜线)。

/(?:([^:\/?#]+):)?(?:\/\/([^\/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?/

它将为您提供捕获组中URI的所有不同部分。

这些部分是:

  • 计划( http:
  • 权限(此处不适用)
  • 路径( www.google.com
  • 查询( q = querystring
  • 片段( #anker

请参阅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,因为他有更完整的答案。