【问题标题】:AngularJS ng-pattern website patternAngularJS ng-pattern 网站模式
【发布时间】:2016-10-14 19:34:21
【问题描述】:
/^[_a-z0-9]+(\.[_a-z0-9]+)*[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,7})$/

这就是模式。当它正确时它说“ok”,当它不正确时它说“not ok”。所以它在 www.google.com 上显示“ok”,但当我输入 http://www.google.com 时显示“not ok”

我希望这种模式也允许 http://,但绝不应该是必需的。

【问题讨论】:

标签: angularjs regex


【解决方案1】:

您可以使用以下正则表达式,我取消了从Perl module URI on CPAN 的文档中借用(我的斜线转义)。

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

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

这些部分是:

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

请参阅https://regex101.com/r/vS5qO1/1 进行试用。

还请注意,这将解析所有类型的 URI,而不仅仅是 http(s)。所以像ftp://anonymous@example.org 这样的东西也可以工作。

【讨论】:

    【解决方案2】:

    如果您希望仅允许 http/https URL 方案(当提供方案时),则对正则表达式进行以下修改即可:

    /^(http:\/\/|https:\/\/)?[_a-z0-9]+(\.[_a-z0-9]+)*[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,7})$/

    您可以使用我的答案作为示例,说明如何将 url 方案组添加到您现有的正则表达式中,但要归功于 @simbabque,因为他有一个更完整的答案。

    【讨论】:

    • 感谢@simbabque 的编辑。当您的所有个人资料图片都显示在您的头顶时,我不想做出任何性别假设,哈哈!
    • 是的,我同意。我通常使用they and them。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 2016-07-11
    相关资源
    最近更新 更多