$Contact运行时是 NodeJS,我正在尝试用名称替换文本。但我还需要能够捕获围绕在大括号中的术语的单词{}:
Where Name = John:
My name is $Contact => My name is John
Hello {I am $Contact} => Hello I am John
Where Name = null:
My name is $Contact => My name is
Hello {I am $Contact} => Hello
这个想法是用字符串替换$Contact限定符,并且可选地,括号中的文本仅在字符串不为空时才会显示。大括号的使用是可选的。
// m = Message template (Hello {I am $Contact})
// qualifier = $Contact
// value = value to replace with
const replaceQualifier = (m, qualifier, value) =>
m.replace(new RegExp('\\{?(.*?)\\' + qualifier + '(.*?)\\}?', 'g'), value ? `$1${value}$2` : '');
它似乎适用于没有大括号但不适用于大括号的限定符。