我有以下字符串:
11110000111100000000111100001111000000
Run Code Online (Sandbox Code Playgroud)
在这个字符串中,我想将0出现次数少于6次的s逐一替换。如果它们出现6次或更多,我想保留它们。
(例如用点替换它们)
最终结果应该是
1111....1111000000001111....1111000000
Run Code Online (Sandbox Code Playgroud)
我考虑过使用否定前瞻并尝试过,但我不确定它在特定用例中如何工作。
有人可以帮助我吗?
我当前无法正常工作的正则表达式是
/(?!0{6,})0{1,5}/g
Run Code Online (Sandbox Code Playgroud)
编辑
经过一番尝试后,我发现了这个正则表达式:
/((?:^|1)(?!0{6,})0{1,5})/g
Run Code Online (Sandbox Code Playgroud)
但它捕获了s1之前的0。有没有办法排除它1陷入正则表达式中?
Javascriptreplace可以用函数作为替代,例如:
let res = s.replace(/0+/g, m => {
return (x = m.length) < 6 ? '.'.repeat(x) : m;
});
Run Code Online (Sandbox Code Playgroud)
没有太多需要解释的。匹配一个或多个0。如果匹配项少于 6 个字符,则返回由其长度重复替换字符组成的字符串,否则返回完整匹配项。
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |