我有一个这样的字符串,
ver1.1/hello/12345/bar -> extract 12345
world/098767123/foo -> extract 098767123
ver1.2344/foo/78687115/ -> extract 78687115
我用了/d+/g
或/d+/
,但运气不好,ver
的数字总是出现。我如何提取没有任何字符和斜杠之间的数字?
使用捕获组仅捕获斜杠之间的数字:/(d+)/
console.log("ver1.1/hello/12345/bar".match(//(d+)//))
您可以使用一个捕获组,例如:
var regex = //(d+)//;
var string = "ver1.2344/foo/78687115/";
var match = string.match(regex);
if (match) {
console.log(match[1]);
}
对于出现在字符串开头或结尾的数字,也可以使用/(?:/|^)(d+)(?:/|$)/
。它只有两个非捕获组,表示"match/或开始/结束">
您可以向匹配的输出添加一个映射以去掉斜杠。使用全局标志g
也可以防止重复的结果。
const regEx = /(?:/)(d+)(?:/)/g;
const source = "ver1.1/hello/12345/bar";
const arrResults = Array.from(source.matchAll(regEx), m => m[1]);
console.log(arrResults)