Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用正则表达式从段落中提取多个{tag}_Javascript_Regex - Fatal编程技术网

Javascript 使用正则表达式从段落中提取多个{tag}

Javascript 使用正则表达式从段落中提取多个{tag},javascript,regex,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. 2) 整个{}包括段落中的内容 user.firstName

我有这样的电子邮件模板:

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.
2) 整个{}包括段落中的内容

user.firstName // from {user.firstName}
item // from {item}
orderId // from {{orderId}}
{user.firstName} // from {user.firstName}
{item} // from {item}
{orderId} // from {{orderId}}
对于(1),我尝试了
/{(.*)}/g
/({)(.*)(})/g
,但它仍然会选择整个{{tag}}

以下是我尝试的目标(2):

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


请提前帮助并感谢您。

您可以尝试使用以下regexp:

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

在那里,您的匹配将有两个捕获组:

  • 完全匹配,使用大括号,如
    {user.firstName}
  • 分支内的任何内容,如
    user.firstName

  • 您还可以在此处检查该表达式

    编辑2:基于从@melpomene收到的评论

    var reg=/{([\w(.*\w)*]+)}/g;
    var string=“{x}亲爱的{user.firstName},

    感谢您向我们购买{item}。

    您的订单ID是:{{orderId}。

    再次感谢您对我们的支持; var结果=null; while(结果=reg.exec(字符串))
    console.log(结果[1])你的代码在哪里?试试类似
    ({([\w\.]*)})
    ?这应该可以
    (?OP应该注意,只有当我们明确地只允许一个或两个括号时,这才有效,因为@J.Pichardo感谢你的回答。经过测试,它可以以非常简单的方式处理我的问题(2)。再次感谢:)如果在
    string
    “{x}亲爱的{user.firstName},“
    @melpomene”的开头添加一个字母标记,那么代码将严重失败。它将匹配
    {
    }
    中的内容,从
    {
    开始到
    }
    的第一次出现
    (?=})
    表示直到第一个正向前瞻,与循环中的
    中断
    相同。您的正则表达式中已经有一个固定的
    }
    <代码>(?=})}
    是多余的。@melpomene您现在可以检查一下吗?我编辑了代码并添加了示例。
    [\d\w]
    只是
    \w
    <代码>\w
    已包含数字<代码>[.*]在这里毫无意义。它与文本
    或文本
    *
    匹配。
    /({([a-z])\w+})|({([a-z])+})|({([A-Z])\w+})|({([A-Z])+})|({[0-9]+})/g