【问题标题】:Regular expression for browser Url浏览器 URL 的正则表达式
【发布时间】:2010-05-24 18:56:55
【问题描述】:

我是 JavaScript 新手

我需要一个正则表达式

允许这两种形式

例如:

  1. http://www.google.com
  2. www.google.com

【问题讨论】:

标签: javascript regex url


【解决方案1】:
var url_pattern = new RegExp("((ftp|http|https)(:\/\/))?([a-zA-Z0-9]+[.]{1}){2}[a-zA-z0-9]+(\/{1}[a-zA-Z0-9]+)*\/?", "i");

return url_pattern.test(url);

【讨论】:

【解决方案2】:

(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?

这很好用。

【讨论】:

  • 感谢您的回复,我使用相同的表达方式,但不允许这种形式的网址 www.google.com
  • 有趣。我在我的一些应用程序中使用了这种模式,并且一直运行良好。你确定你的代码没有错误吗?
  • 不应该是((ftp|http|https):\/\/)?...吗?
【解决方案3】:

我刚刚写了一篇关于识别最常用格式的 URL 的博文,例如:

www.google.com http://www.google.com mailto:somebody@google.com somebody@google.com www.url-with-querystring.com/?url=has-querystring

使用的正则表达式是/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/,但我建议您转到http://blog.mattheworiordan.com/post/13174566389/url-regular-expression-for-links-with-or-without-the 以查看完整的工作示例以及正则表达式的说明,以防您需要扩展或调整它。

【讨论】:

    【解决方案4】:

    ^((?:(?:https?|ftp):)?\/\/?)?(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)(?:\.(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)*(?:\.(?:[a-z\x{00a1}-\x{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$

    测试一下! https://regex101.com/r/qQ8uV6/1

    摘自寻找完美的 URL 验证正则表达式 https://mathiasbynens.be/demo/url-regex(稍作修改)。

    感谢@diegoperini

    如果你用 JavaScript 测试它,你会得到一个不错的

    ParseError:解析正则表达式时出错:正则表达式无效

    ....

    字符类中的范围乱序

    您需要将\x{xxxx} 替换为\uxxxx。所以在 JavaScript 中会是:

    ^(?:(?:https?|ftp):\/\/)?(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\ufff0-9]+-?)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]+-?)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$

    就像JavaScript Unicode Regex - Range out of order in character class中所说的那样

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-02
      • 2013-12-10
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多