如何搜索替换为正则表达式并将案例保持为javascript中的原始

Gra*_*ham 16 javascript regex

这是我的问题.我有一个带有大小写混合的字符串.无论是什么情况我都想搜索,然后用匹配中的一些字符替换匹配.

例如:

var s1 = "abC...ABc..aBC....abc...ABC";
var s2 = s.replace(/some clever regex for abc/g, "#"+original abc match+"#");
Run Code Online (Sandbox Code Playgroud)

s2中的结果最终应该如下:

"#abC#...#ABc#..#aBC#....#abc#...#ABC#"
Run Code Online (Sandbox Code Playgroud)

这可以用正则表达式完成吗?如果是这样,怎么样?

Dhr*_*hak 33

这可以使用回调函数进行正则表达式替换.

var s1 = "abC...ABc..aBC....abc...ABC";

var s2 = s1.replace(/abc/ig, function (match) {
  return "#" + match + "#"  ;
}
 );

alert(s2);
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/dxeE9/


Joh*_*rak 20

这可以使用反向引用来完成:

var s2 = s.replace(/your complex regex/g, "#$&#");
Run Code Online (Sandbox Code Playgroud)

反向引用$&引入整个匹配.如果你想在任何情况下匹配"abc":

var s2 = s.replace(/abc/ig, "#$&#");
Run Code Online (Sandbox Code Playgroud)

如果您只想引入更大模式的一部分,可以通过其组号来引用它:

var s2 = s.replace(/some (part) of a string/ig, "#$1#");
Run Code Online (Sandbox Code Playgroud)

组按左括号编号,从左到右,从$1$9.


Ani*_*dha 5

你也可以这样做

yourString.replace(/([a-z]+)/ig, "#$1#")
Run Code Online (Sandbox Code Playgroud)