Javascript正则表达式替换下一个匹配

标签 javascript regex string replace match

您可能认为相关的许多问题都会说“use/g”之类的内容。那不是我所追求的。一定有办法做到这一点。我所拥有的是以下内容:

<script>
var myString = "DECLARE DeCLARE Declare DECLARE";
var arr = myString.match(new RegExp("[Dd]eclare|DECLARE","gm"));
var clr = "#F00";
for(var i=0; i<arr.length; i++)
{
    myString = myString.replace(arr[i],"-"+arr[i]+"-");
}
document.write(myString);
</script>

输出:

--DECLARE-- DeCLARE -Declare- DECLARE

期望的输出:

-DECLARE- DeCLARE -Declare- -DECLARE-

最佳答案

在全局正则表达式中使用捕获组,并在 .replace() 中使用捕获的值。

var myString = "DECLARE DeCLARE Declare DECLARE";

// ---capture-----------v------------------v
var regex = new RegExp("([Dd]eclare|DECLARE)","gm");

// ---first capture------------------v
myString = myString.replace(regex,"-$1-");

document.write(myString); // "-DECLARE- DeCLARE -Declare- -DECLARE-"

关于Javascript正则表达式替换下一个匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16329068/

相关文章:

javascript - Masonry 和 BootStrap 3 下拉菜单

regex - 使用字符串替换来屏蔽字符串的正则表达式

java - Java:正则表达式不匹配

string - Visual Basic 字符串工具

java - 转换字符串日期/时间值

javascript - 在 Angular 8 中的另一个应用程序中引用服务代码

javascript - tinymce 删除我的标记

javascript - Redux 存储在 React 类组件中返回 null 值

javascript - 爆炸字符串的函数?

objective-c - 本地化电话号码格式