正则表达式第一个结果($ 1)替换为变量的属性
Regex first result ($1) replacement as property of variable
我试图在字符串中找到以'%%msStrs.'开头并以'%%'结尾的所有实例,并替换为实际变量msgStrs['whatever']。下面是一些示例代码:
var msgStrs = {
test: "1",
test2: "2"
}
var msg = 'Test %%msgStrs.test%% test2 %%msgStrs.test2%%';
msg = msg.replace(/%%msgStrs'.(.*?)%%/g,msgStrs['$1']);
这是小提琴。
正则表达式似乎正在工作,$1 返回正确的正则表达式,但它必须采用错误的类型格式,因为 msgStrs 变量显示未定义。如果我将替换行更改为:
msg = msg.replace(/%%msgStrs'.(.*?)%%/g,"msgStrs['$1']");
这将显示 $1 的正确字符串。
为什么它不会拉取msgStrs.test和msgStrs.test2?
您需要在回调中执行此操作:
var msgStrs = {
test: "1",
test2: "2"
}
var msg = 'Test %%msgStrs.test%% test2 %%msgStrs.test2%%';
msg = msg.replace(/%%msgStrs'.(.*?)%%/g, function(match, group1) {
return msgStrs[group1] ? msgStrs[group1] : match;
});
console.log(msg); // => Test 1 test2 2
其中m
是整个匹配项,g
是捕获的子匹配项。如果当前匹配的g
没有值,则返回整个匹配项(由于msgStrs[g] ? msgStrs[g] : m;
)。
相关文章:
- window.location替换并传递URL历史记录条目中的变量
- 替换变量时,JavaScript字符串replace()不起作用
- 在 Javascript 中替换变量的值
- JavaScript正则表达式替换变量
- 如何替换变量中的更多字符串
- 替换变量[Javascript]时出现问题
- "[对象对象]”;在警报提示中使用时替换变量字符串
- 通过jQuery替换变量和静态文本
- Swap()函数用于替换变量'
- 用函数(变量)替换变量
- 数据表用其作用域之外的数据替换变量
- Javascript替换变量"在HTML代码中更快
- 在TinyMCE中保存替换变量,但在可视化编辑器中显示替换的内容
- 替换变量中的字符
- 用gulp替换变量
- Javascript正则表达式:替换变量
- 如何使用jquery替换变量中的元素并在另一个变量中获取结果
- 用grunt替换变量
- 如何在正则表达式中替换变量
- 如何替换变量设置的 Replace() - Javascript