请教一下大佬正则的问题,实在搞不定

西装暴徒
  • 3
新手上路,请多包涵

急!急!急!
我现在有这样一个字符串 '我叫${name},今年${age}岁了'
有一个正则可以替换掉里面的变量 let reg = /${age}/g;

但是这样只能固定换掉name或者age,我现在想在里面放一个变量该如何写呢?

回复
阅读 862
5 个回答
'我叫${name},今年${age}岁了'.replace(/(?<=\$\{)[^\{\}]+(?=\})/g,"_")

正则解释:
1、(?<=\$\{) 表示查找 ${ 后面的内容
2、(?=\}) 表示查找 } 前面的内容
3、[^\{\}] 表示不包含 { 或 } 字符串

如有帮助,请采纳,Thanks♪(・ω・)ノ

image.png

模板字符串
https://developer.mozilla.org...

javascript - 将字符串转换为模板字符串
https://www.itranslater.com/q...

String.prototype.interpolate = function(params) {
  const names = Object.keys(params);
  const vals = Object.values(params);
  return new Function(...names, `return \`${this}\`;`)(...vals);
}

const template = 'Example text: ${text}';
const result = template.interpolate({
  text: 'Foo Boo'
});
console.log(result);//Example text: Foo Boo
let a = /\$\{.+?\}/g;

你给的代码一般是在类似shell的环境中,或者一些模板系统中,直接输出变量来构成实际内容情况,和正则式(规则式)没有关系。

你要中模板中,把 变量站位 符 替换成变量实际值,其实就是一个 字符串replace处理,
你前面已经写好了规则式,就在需要应用的地方按下面处理,多个不同规则式替换需要多次处理。

instr.replace(/规则式/,"变量值");

例如

const inStr=" ${name},你好!\n${name}今年${age}岁。";
let nRe=/\$\{name\}/g
let aRe=/\$\{age\}/g
let name="小王";
let age=5;
console.log( (inStr.replace(nRe,name)).replace(aRe,age) )

var replace = (str, data) => str.replace(/&dollar;{(.*?)}/g,(match, $1) => data[$1])

这样?

你知道吗?

宣传栏