Javascript Regex - 替换所有出现的匹配字符串,除了括号之间的任何字符串

标签 javascript regex string replace

我需要替换一个在另一个字符串中有实例的字符串,但如果它在大括号内则忽略替换任何字符串。

我尝试了以下方法:

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/

相关文章:

javascript - 在日期选择器上显示特定月份而不更改所选日期

javascript - 从外部函数中过滤 Fullcalendar 4

javascript - 键映射在 JavaScript 映射中的工作原理

python - Django 引荐来源问题

regex - 取出strsplit中的元素并放入dataFrame

ruby - 如何将字符串与数组进行比较以确定最高索引值?

java - 如何在 Java 中比较字符串?

string - 戈朗 : find string in file and show line number

javascript - Jquery 查找 Active 类并替换该类

regex - Perl 字符串替换 : Match, 但不替换,正则表达式的一部分