Saya memiliki Obyek JSON Const Item = {Accounturl: 'www.google.com', AccountDomain: 'www.yahoo.com'} dan string input foo $ env [accountdomain]. Saya ingin mengganti $ env [akun) ...

1
dota2pro 5 April 2021, 15:47

2 jawaban

Jawaban Terbaik

Anda dapat menggunakan pertandingan dan satu grup capture untuk mendapatkan nama properti yang sesuai dengan objek.

Perhatikan bahwa Anda harus melarikan diri dari tanda dolar dan bukaan braket persegi.

Sebagai @ Wiktor Stribiżew menunjukkan dalam komentar, Anda dapat menggunakan || m untuk kembali Pertandingan dalam hal nilai grup 1 tidak dapat ditemukan di objek.

const item = {
  accountsUrl: 'www.google.com',
  accountsDomain: 'www.yahoo.com'
}
const regex = /\$ENV\[(\w+)]/
let s = "foo$ENV[accountsDomain]bar";
s = s.replace(regex, (m, g1) => item[g1] || m);
console.log(s);
1
The fourth bird 5 April 2021, 13:05
str.replace(/(?<=\$ENV\[)[^\]]+/, match => item[match]);
-1
MikeM 5 April 2021, 13:06