使用正则表达式从段落

时间:2018-06-01 19:58:51

标签: javascript regex

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

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}中有/多个点。

请提前帮助并表示感谢。

2 个答案:

答案 0 :(得分:2)

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

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

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

  1. 完全匹配,使用大括号,例如{user.firstName}
  2. 不管是什么,如user.firstName
  3. 您还可以在https://regex101.com/r/eXKJzs/1/

    中查看该表达式

答案 1 :(得分:0)

编辑2:根据从@melpomene收到的评论

&#13;
&#13;
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]);
&#13;
&#13;
&#13;