Javascript 正则表达式将重复整数替换为其匹配数

Javascript 正则表达式将重复整数替换为其匹配数,javascript,regex,Javascript,Regex,我试图创建一个压缩算法,用字符串z替换字符串中所有重复的零,一行中至少有5个 例如: "01100000210000000000000001" "011z(5)21z(15)1" 我已经能够使用下面的子字符串替换所有重复出现的零,但是我不知道如何找到匹配数并用z替换它 使用正则表达式可以做到这一点吗?这对于您的示例正则表达式来说非常特殊,但只是为了演示 这对于您的示例regex来说非常特殊,但只是为了证明 此注释的截止日期仍然基于ECMAScript 5。这个问题没有被标记为ECMAScri

我试图创建一个压缩算法,用字符串z替换字符串中所有重复的零,一行中至少有5个

例如:

"01100000210000000000000001"

"011z(5)21z(15)1"
我已经能够使用下面的子字符串替换所有重复出现的零,但是我不知道如何找到匹配数并用z替换它


使用正则表达式可以做到这一点吗?

这对于您的示例正则表达式来说非常特殊,但只是为了演示


这对于您的示例regex来说非常特殊,但只是为了证明


此注释的截止日期仍然基于ECMAScript 5。这个问题没有被标记为ECMAScript 6问题,我相信胖箭头语法只在ECMAScript 6中存在。请澄清您的答案中=>运算符的用法,或者将其重写为可在当前版本的JavaScript中运行。@JosephMarikle没有当前的JavaScript版本。ECMAScript 6是当前已完成发布的JavaScript所基于的标准。@Xufox承认,这有点用词不当。我只是寻找了一个,它看起来像大多数浏览器,因此使用JavaScript引擎的大部分应用程序现在都有一个大部分支持ES6的JavaScript版本/引擎。IE和mobile仍然落后,但我想我现在可以停止在JavaScript答案中指出ES6语法了。感谢您的更正,Xufox。截至此评论的内容仍然基于ECMAScript 5。这个问题没有被标记为ECMAScript 6问题,我相信胖箭头语法只在ECMAScript 6中存在。请澄清您的答案中=>运算符的用法,或者将其重写为可在当前版本的JavaScript中运行。@JosephMarikle没有当前的JavaScript版本。ECMAScript 6是当前已完成发布的JavaScript所基于的标准。@Xufox承认,这有点用词不当。我只是寻找了一个,它看起来像大多数浏览器,因此使用JavaScript引擎的大部分应用程序现在都有一个大部分支持ES6的JavaScript版本/引擎。IE和mobile仍然落后,但我想我现在可以停止在JavaScript答案中指出ES6语法了。谢谢你的更正,Xufox。
string.replace(/(0{5,})/g, "hi");
"01100000210000000000000001".replace(/0{5,}/g, function(matches) {
   return 'z(' + matches.length + ')';
})
        String expression = "01100000210000000000000001";
        Pattern pattern = Pattern.compile("(0{5,})");       
        Matcher matcher = pattern.matcher(expression);
        while(matcher.find()) {
            String match =matcher.group();
            expression = expression.replaceFirst(match,"Z("+match.length()+")");            
        }