正则表达式用于匹配重复(连续或非连续)字符的字符串的第一部分

时间:2016-11-25 13:20:47

标签: regex string

基本上我有一个字符串,我想找到与字符重复匹配N次的最短子字符串(包括开头),如果连续或不连续都没关系。我想在Javascript中使用它。

示例: 让我们弄清楚这个角色是' /'我们希望它能匹配5次重复。

对于此字符串: http://remote-computer.example.local/home/dev/proj/sdk/docs/index.html#/api

匹配的字符串将是: http://remote-computer.example.local/home/dev/

对于此字符串: ////远程计算机/示例/本地/家

匹配的字符串将是: ////远程计算机/

2 个答案:

答案 0 :(得分:3)

这个正则表达式怎么样:

^((?:[^/]*/){5})

您想要的子字符串将被捕获到第1组。

在javascript中你可以这样做:

var re = new RegExp("^((?:[^/]*/){5})); // excape the slashes is not mandatory

var re = /^((?:[^\/]*\/){5})/; // here you have to excape the slashes

<强>解释

^          : begining of the string
(          : start capture group 1
  (?:      : start non capture group
    [^/]*/ : 0 or more any character that is not a slash, followed by a slash
   ){5}    : the non capture group occurs 5 times
)          : end of group 1 

答案 1 :(得分:2)

您可以使用(?:.*?/){5}See a demo here

这与Toto的regexp完全相同的子串匹配,但更短:

  1. 无需使用^;正则表达式在开头默认情况下开始匹配
  2. 您不需要捕获组,因为您想要完整匹配。
  3. .*?/匹配“所有内容,直到下一个/,包括”,也可以像Toto一样写成[^/]*/