取xnum-539 classname random-word xnum-hello hi-239
。
我需要选择xnum-
之后的所有内容,因此在这种情况下是539
和hello
。
我已经尝试了多种方法,但我要做的最好的是:-(.*?)\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且与一个或多个非空白符号匹配的组。