这是我的问题。我有一个带有大小写混合的字符串。无论是什么情况我想搜索,然后用匹配的一些字符替换匹配。
例如:
var s1 = "abC...ABc..aBC....abc...ABC";
var s2 = s.replace(/some clever regex for abc/g, "#"+original abc match+"#");
s2中的结果最终应该是:
"#abC#...#ABc#..#aBC#....#abc#...#ABC#"
这可以用正则表达式完成吗?如果是这样,怎么样?
答案 0 :(得分:32)
这可以使用regex replace的回调函数来完成。
var s1 = "abC...ABc..aBC....abc...ABC";
var s2 = s1.replace(/abc/ig, function (match) {
return "#" + match + "#" ;
}
);
alert(s2);
答案 1 :(得分:19)
这可以使用反向引用来完成:
var s2 = s.replace(/your complex regex/g, "#$&#");
反向引用$&
带来整场比赛。如果你想在任何情况下匹配“abc”:
var s2 = s.replace(/abc/ig, "#$&#");
如果您只想引入更大模式的一部分,可以通过其组号来引用它:
var s2 = s.replace(/some (part) of a string/ig, "#$1#");
群组按左括号进行编号,从左到右,从$1
到$9
。
答案 2 :(得分:5)
你也可以这样做
yourString.replace(/([a-z]+)/ig, "#$1#")