jor*_*tor 2 javascript regex string replace
假设我有这个字符串:
<i id="1"></i><i id="2"></i><i id="3"></i>
Run Code Online (Sandbox Code Playgroud)
和这个对象:
{
"1": "Red",
"2": "Green",
"3": "Blue"
}
Run Code Online (Sandbox Code Playgroud)
然后我想获取这个字符串:
<i color="Red"></i><i color="Green"></i><i color="Blue"></i>
Run Code Online (Sandbox Code Playgroud)
可以通过正则表达式替换来实现吗?
我试过这个:
var stringIwant = stringIhave.replace(/id="(\d)"/g, 'color="' + myObject["$1"] + '"')
Run Code Online (Sandbox Code Playgroud)
但它尝试读取对象的属性“$1”,但该属性不存在。我还尝试删除 1 美元左右的引号:
var stringIwant = stringIhave.replace(/id="(\d)"/g, 'color="' + myObject[$1] + '"')
Run Code Online (Sandbox Code Playgroud)
但我得到了ReferenceError: $1 is not defined
我尝试了更多的事情,但没有什么值得一提的。
这就是为什么我想知道这是否可能。有什么帮助吗?
您可以通过回调来做到这一点:
const stringIhave = `<i id="1"></i><i id="2"></i><i id="3"></i>`;
const obj = {
"1": "Red",
"2": "Green",
"3": "Blue"
};
const stringIwant = stringIhave.replace(/id="(\d)"/g, (mat, grp) => `color="${obj[grp]}"`
);
console.log(stringIwant);Run Code Online (Sandbox Code Playgroud)