【问题标题】:Parsing a URL using Google App Script使用 Google App 脚本解析 URL
【发布时间】:2012-08-08 17:42:17
【问题描述】:

我正在处理来自我在 Google App Script 上的独立脚本中的组成部分的 URL。

我的问题是网上的正则表达式构建工具告诉我我的正则表达式是正确的,但我只得到一个值。

具体来说,我的代码是:

function UrlComponents(url) {
  const _urlMatchPattern = /^((http[s]?):\/)?\/?([^:\/\s]+)(:([^\/]*))?((\/\w+)*\/)([\w\-\.]+[^#?\s]+)(\?([^#]*))?(#(.*))?$/mig;   // Source: http://stackoverflow.com/questions/27745/getting-parts-of-a-url-regex

  if (!_urlMatchPattern.test(url))
    return new Array();

  var urlMatches = url.match(_urlMatchPattern);

  if (urlMatches != null)
  {
    Logger.log("Count:" + Math.floor(urlMatches.length));

    for (var i=0; i<Math.floor(urlMatches.length);i++)
      Logger.log("Position " + i + ": " + urlMatches[i]);
  }

  return urlMatches;
}

当我通过运行代码对此进行测试时,输出是包含填充字符串的单个数组元素。但是,通过正则表达式测试工具(例如http://gskinner.com/RegExr/ 或 www.regexplanet.com/advanced/java/)提供的信息相同。

非常欢迎任何帮助/建议/礼貌地指出我不可避免的愚蠢错误。

谢谢,乔尼

【问题讨论】:

    标签: regex url google-apps-script


    【解决方案1】:

    要解决这个问题,您必须从正则表达式中删除 /g 修饰符,即该行应该是

    const _urlMatchPattern = /^((http[s]?):\/)?\/?([^:\/\s]+)(:([^\/]*))?((\/\w+)*\/)([\w\-\.]+[^#?\s]+)(\?([^#]*))?(#(.*))?$/mi;
    

    【讨论】:

    • 非常感谢,兆字节1024。奇迹般有效。我曾相信我已经测试了所有这些组合。
    • @Jonny Mak 如果我想从页面中提取所有链接而不破坏其部分的 url 我应该使用你的代码的哪一部分?
    猜你喜欢
    • 1970-01-01
    • 2014-12-19
    • 1970-01-01
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 2022-09-25
    • 2014-10-15
    • 1970-01-01
    相关资源
    最近更新 更多