我有看起来像这样的电子邮件模板:
Dear {user.firstName},<br><br> Thank you for buying {item} with us. <br><br>
Your Order ID is : <b> {{orderId}} </b>. <br><br>
Thank again for supporting us.
以下是我试图从该段落中提取的示例:
1(段落中{}内的东西
user.firstName // from {user.firstName}
item // from {item}
orderId // from {{orderId}}
2(整个{},包括段落中的内容
{user.firstName} // from {user.firstName}
{item} // from {item}
{orderId} // from {{orderId}}
对于 (1(,我尝试使用/{(.*)}/g
或/({)(.*)(})/g
但它仍然会选择整个 {{tag}}。
以下是我尝试过的(2(:
/({([a-z])w+})|({([a-z])+})|({([A-Z])w+})|({([A-Z])+})|({[0-9]+})/g
它可以满足大多数标准,除非 {tag} 中有一个/多个点。
请帮助并提前感谢您。
您可以尝试使用以下正则表达式:
({([w.]*)})
在那里,您的匹配将有两个捕获组:
- 完全匹配,带牙套,就像
{user.firstName}
- 无论布兰斯里面有什么,比如
user.firstName
您也可以在此处检查该表达式 https://regex101.com/r/eXKJzs/1/
Edit 2 : 根据收到的@melpomene评论
var reg = /{([w(.*w)*]+)}/g;
var string = "{x}Dear {user.firstName},<br><br> Thank you for buying {item} with us. <br><br>Your Order ID is : <b> {{orderId}} </b>. <br><br> Thank again for supporting us.";
var result = null;
while(result = reg.exec(string))
console.log(result[1]);