比如
[CM][bt][02][03]
我想匹配 02
我的正则是这样写的:
i)(?<=\bCM\b(\D*)?)\d+(?=\D)
但无法匹配成功,请问该怎样改呢?
感谢各位!
正则本身没错...错的是
PCRE 8.34–8.35 UTF-8 does not support variable repetition inside lookbehind or alternatives of different lengths inside groups inside lookbehind
var str = '[CM][bt][02][03]';
str = str.replace(/\[/gi,"@").replace(/\]/gi,"@");
var reg = /\w+@{2}\d+/gi;
var arrMatches = str.match(reg);
for(var i = 0 ; i < arrMatches.length; i++){
console.log( arrMatches[i].replace(/\D/gi,""));
}
由于[]是正则表达式的元字符,先把它替换成@,查找单词开始,跟着@@,再数字的表达式,获取表达式后去除非数字的,最后得到数字02