首页 > 解决方案 > 使用 Regex 从段落中提取多个 {tag}

问题描述

我有看起来像这样的电子邮件模板:

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),我尝试使用/{(.*)}/gor/({)(.*)(})/g但它仍然会选择整个 {{tag}}。

以下是我尝试过的(2):

/({([a-z])\w+})|({([a-z])+})|({([A-Z])\w+})|({([A-Z])+})|({[0-9]+})/g

它可以满足大多数条件,除非 {tag} 中有一个/多个点。

请帮助并提前感谢您。

标签: javascriptregex

解决方案


您可以尝试使用以下正则表达式:

({([\w\.]*)})

您的比赛将有两个捕获组:

  1. 完全匹配,用你的牙套,比如{user.firstName}
  2. 不管是什么在花括号里面,比如user.firstName

您还可以在此处检查该表达式https://regex101.com/r/eXKJzs/1/


推荐阅读