Javascript Regex-替换匹配字符串的所有出现,括号之间的任何字符串除外
Javascript Regex - Replace all occurences of matching string EXCEPT any string between brackets
我需要替换一个在另一个字符串中有实例的字符串,但如果它在大括号中,则忽略替换任何字符串。
我尝试过以下几种:
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);
使用负前瞻
Regex演示
(?!'{)replace(?!'})
(?!'{)
:否定前瞻-断言不可能匹配{
文本replace
:完全匹配replace
字符串(?!'})
:Negative Lookahead-断言不可能匹配}
文字
Javascript演示
var str = "replace {replace} test replacesreplace";
var replacedStr = str.replace(/(?!'{)replace(?!'})/g, "%");
document.write(replacedStr);
相关文章:
- 是否有任何JavaScript UI组件可以显示字符串之间的差异
- 使用Javascript获取两个字符串之间的字符串数组
- 如何在 javascript 中使用正则表达式在其他两个字符串之间找到一个字符串
- javascript:获取特定字符串之间的字符串
- Javascript Regex匹配两个字符串之间的子字符串,但子字符串可以包含DOT(.)
- 在jQuery或JavaScript中获取两个字符串之间的文本
- 在维护标识标签的字符串之间进行重复数据消除
- 在jQuery中,可以在字符串之间添加条件逻辑吗
- 什么's特征检测、特征推断和使用UA字符串之间的区别
- 替换两个字符串之间的多行文本
- 数组值和字符串之间的 JavaScript 比较
- 正则表达式获取两个字符串之间的所有字符串
- 如何使用正则表达式获取两个特定字符串之间的字符串
- 如何使用 javascript 删除字符串之间的标记
- 如何使用nodejs在两个字符串之间选择文本
- 正则表达式在字符串中搜索两个字符串之间的内容
- 查找/获取字符串之间的特定字符串
- Javascript 正则表达式替换 2 个字符串之间的字符串
- 匹配两个字符串之间的字符串
- 在 JavaScript 代码中的注释字符串之间匹配文本