我需要替换一个在另一个字符串中有实例的字符串,但如果它在大括号内则忽略替换任何字符串。
我尝试了以下方法:
str = "replace {replace} test replacesreplace"
str.replace(/{[^}]*}|(replace(s)?)/g, "%")
// % % test %%
str = "replace {replace} test replacesreplace"
str.replace(/{[^}]*}|(replace(s)?)/g, "$1"+"%")
// replace% % test replaces%replace%
但我需要替换成这样:"% {replace} test %%"
谁能建议如何在 Javascript 中执行此操作?
最佳答案
您可以使用带有 String.replace()
的函数。如果找到捕获,则返回括号内的内容,否则返回 %
。
var str = "replace {replace} test replacesreplace";
str = str.replace(/({[^}]*})|replaces?/g, function($0, $1) {
return typeof $1 != 'undefined' ? $1 : "%";
});
document.write(str);
关于Javascript Regex - 替换所有出现的匹配字符串,除了括号之间的任何字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33559324/