2 c 4510471 C_4510471 于 2015.07.07 13:18 提问

【已解决】正则 零宽断言 匹配一个单词后的第一个数字

比如
[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

1个回答

lengmeiyanok
lengmeiyanok   2015.07.19 14:03
已采纳
            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                  
Csdn user default icon
上传中...
上传图片
插入图片