xnum-539 classname random-word xnum-hello hi-239

我需要选择xnum-之后的所有内容,因此在这种情况下是539hello

我已经尝试了多种方法,但我要做的最好的是:

-(.*?)\s
但这包括破折号,当我只想要破折号后的内容时。 (例如-539

要么

rnum-(.*?)\s占用了整个内容。

对于这两种解决方案,我都不需要手动切片。
抱歉,如果这是重复的,但我尝试使用其他答案,那么我对regex感到很糟糕。

谢谢

最佳答案

请注意,您的正则表达式实际上在匹配末尾需要一个空格(\s),因此,停止正则表达式引擎以在字符串末尾匹配您的值。

您可以使用/xnum-(\S+)/g正则表达式获得所有匹配项,并访问组1:



var s = "xnum-539 classname random xnum-hello";
var res=[],m;
var re = /xnum-(\S+)/g;
while ((m=re.exec(s)) !== null) {
  res.push(m[1]);
}
console.log(res);





图案细节:


xnum--文字字符序列xnum-
(\S+)-捕获ID为1且与一个或多个非空白符号匹配的组。

07-28 10:20