Javascript 捕获重复组

Javascript 捕获重复组,javascript,regex,Javascript,Regex,我有这个字符串1xxxx1xx1xxxx8。我希望获得匹配项,以便获得以下结果: match[0] = '1xxx5' match[1] = '5xx1' match[2] = '1x7' match[3] = '7xxx8' 因此,基本模式是获取数字之间有1或更多x的组。到目前为止,我有一个基本的正则表达式,但它不起作用: /\dx{1,}\d/ 我所使用的字符串只是一个例子,只要字符串是什么,模式就可以继续下去。正则表达式引擎不支持重叠匹配,但您可以使用Paulpro答案中的技巧。或者

我有这个字符串
1xxxx1xx1xxxx8
。我希望获得匹配项,以便获得以下结果:

match[0] = '1xxx5'
match[1] = '5xx1'
match[2] = '1x7'
match[3] =  '7xxx8'
因此,基本模式是获取数字之间有
1
更多
x
的组。到目前为止,我有一个基本的正则表达式,但它不起作用:

/\dx{1,}\d/

我所使用的字符串只是一个例子,只要字符串是什么,模式就可以继续下去。

正则表达式引擎不支持重叠匹配,但您可以使用Paulpro答案中的技巧。或者您可以为此编写自己的算法:

var myString = "1xxx5xx1x7xxx8";
var matches = [];
var curMatch = "";
for (var i = 0; i < myString.length; ++i) {
  var char = myString[i];
  if (char === "x") { // assumes you only have numbers or x's
    curMatch += char;
    continue;
  }

  if (curMatch) {
      matches.push(curMatch + char);
  }

  curMatch = char;
}

console.log(matches)
var myString=“1xxxx1xx1xxxx8”;
var匹配=[];
var curMatch=“”;
对于(变量i=0;i
您可以使用一次查找一个匹配项,并在两者之间递减,以开始搜索具有一个重叠字符的下一个匹配项:

var str='1xxx1xx1xxxx8';
var regex=/\dx+\d/g;
var matches=[],match;
while(match=regex.exec(str)){
matches.push(匹配[0]);
regex.lastIndex-->//开始下一步搜索返回一个字符(重叠匹配)
}

console.log(匹配项)我不知道有哪个正则表达式引擎可以将找到的匹配项与下一个匹配项重叠。这基本上不是匹配的工作方式。所以,你希望5,1和7被匹配两次-不要认为你可以这样做,而不是一个单一的正则表达式,寻找一些非常基本的循环代码。耶,我想要重叠。我怀疑regex不能做到这一点,但我不是专家,所以想看看是否有任何regex魔术师能证实我的怀疑
'1xx53x1xxxx8'.match(/(\dx*)/g).map((I,n,a)=>nx)
得到你想要的,但依赖于“有效性”对于从未知道的
lastIndex
,这真是太棒了