【问题标题】:regex get part of the link正则表达式获取链接的一部分
【发布时间】:2017-10-23 05:07:16
【问题描述】:

https://www.example.com/uk/This-Part-I-Need-To-Get/F1ST2/sometext/

需要得到“This-Part-I-Need-To-Get”,单词开头带有“-”符号和大写字母。 我设法做的就是“/([A-Z-])\w+/g”,它返回

“This”“-Part”“-I”“-Need”“-To”“-Get”“F1ST2”,但我不需要“F1ST2”。 我该怎么做?

【问题讨论】:

  • 也许,/\w+(?:-\w+)+/。但如果路径的其他部分包含-,则可能会出现不需要的结果。

标签: javascript regex hyperlink


【解决方案1】:

这可能取决于 URL 格式,但此时:

var url = 'https://www.example.com/uk/This-Part-I-Need-To-Get/F1ST2/sometext/';
console.log(url.split('/')[4])

【讨论】:

  • 最快的方法,绝对
【解决方案2】:

试试这个正则表达式

/([A-Z][a-z]|-[A-Z]|-[A-Z][a-z]-|-[A-Z]-)\w+/g

这是一个片段

var url = 'https://www.example.com/uk/This-Part-I-Need-To-Get/F1ST2/sometext/';
console.log(url.match(/([A-Z][a-z]|-[A-Z]|-[A-Z][a-z]-|-[A-Z]-)\w+/g).join(''))

【讨论】:

    【解决方案3】:

    正如@MichałSałaciński 所说,您应该考虑使用split 函数。

    顺便说一句,如果你不想使用正则表达式,那么如果 url 格式没有改变,这个就可以了:[^\/]+(?=(?:\/\w+){2}\/)

    Demo

    var re = /[^\/]+(?=(?:\/\w+){2}\/)/
    var url = "https://www.example.com/uk/This-Part-I-Need-To-Get/F1ST2/sometext/"
    
    if(re.test(url)) {
      // URL match regex pattern, we can safely get full match
      var value = re.exec(url)[0];
      console.log(value);
    }

    说明

    [^\/]+ 除斜线以外的任何字符n

    (?=...) 后跟

    (?:\/\w+){2}\/ 一个斜线和任何单词字符(2 次)然后是一个斜线

    解决方案 2

    这个也可以使用捕获的组 1::\/\/[^\/]+\/[^\/]+\/([^\/]+)

    Demo

    var re = /:\/\/[^\/]+\/[^\/]+\/([^\/]+)/;
    var url = "https://www.example.com/uk/This-Part-I-Need-To-Get/F1ST2/sometext/";
    
    if(re.test(url)) {
      // URL match regex pattern, we can safely get group 1 value
      var value = re.exec(url)[1];
      console.log(value );
    }

    【讨论】:

      猜你喜欢
      • 2010-09-06
      • 2014-09-04
      • 1970-01-01
      • 2021-12-10
      • 2021-09-27
      • 1970-01-01
      • 2013-08-28
      • 1970-01-01
      • 2011-05-31
      相关资源
      最近更新 更多