需要了解为什么regex没有替换所有匹配项
Need to understand why the regex is not replacing all matches
我正试图弄清楚下面的正则表达式,以及它为什么会给我带来这样的结果。
我有以下javascript:
let result = '7979797'.replace(/797/g,'77');
我本以为结果的值是7777,但结果却是77977。
我希望有人能解释为什么我得到77977的值,以及我需要对正则表达式进行什么更改才能替换所有模式为797到77的字符串。
当正则表达式用77
替换第一个797
时,它不会重新扫描已替换的材质(77
),因此它会看到9
,然后是797
,从而得到结果。
作为替代方案,我们可以使用下面的代码来实现所需的效果。
var input = '7979797';
var reg = /797/;
while(reg.test(input)){
input = input.replace(reg,'77')
}
console.log(input)
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 我如何找到一个句子中的所有空格并替换忽略它们
- 如何用更合适的内容替换document.write
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 在DOM中查找一个模式并替换它's的内容使用jquery
- 用空格替换下划线PHP
- str.split(someString).join(someOtherString)是否等效于替换
- 使用javascript的图像替换循环
- window.location替换并传递URL历史记录条目中的变量
- 替换标记中的属性
- 指令的模板必须只有一个根元素:With restrict E&替换true
- 如何在Analytics.js中始终了解最新的cookie过期时间
- AngularJs对ng消息的自定义替换
- 用超链接替换URLS
- 用cdata标记替换脚本标记
- Javascript对象类在单击时打开窗口进行颜色选择,并在更改时替换对象背景颜色
- 在javascript中,I'我很难弄清楚如何让regex只替换捕获而不替换匹配
- 替换url中变量的值
- 需要了解为什么regex没有替换所有匹配项
- 了解JavaScript替换