【发布时间】:2015-05-06 12:47:42
【问题描述】:
`<html>
<head>
<title>DailyHoroscope.com</title>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
{if $contact['timezone']}
{assign var=local_tz value=$contact['timezone']}
{else}
{assign var=local_tz value='America/New_York'}
{/if}
{assign var=tracking_params value="utm_medium={$medium}&utm_source={$source}&utm_campaign={$campaign}"}
</head>
<body style="background:#fff;">
</body>
</html>`
在这段代码中,我需要在 {} 中获取子字符串。 我正在使用这个正则表达式
/\{([^}]*)\}/mig
在那些只包含一个 { 和 } 的子字符串类型的情况下,它可以正常工作。喜欢
{if $contact['timezone']}
但是如果是这个字符串--->
{assign var=tracking_params value="utm_medium={$medium}&utm_source={$source}&utm_campaign={$campaign}"}
我期待整个字符串作为结果,但它返回给我
{assign var=tracking_params value="utm_medium={$medium},
{$source} and {$campaign}
这是正确的,因为我的正则表达式在获得第一个 '}' 后结束;有没有办法使用正则表达式获取包含相同数量的“{”和“}”的字符串?什么是正则表达式?
【问题讨论】:
-
这不是使用正则表达式完成的工作,尤其是当 JavaScript 正则表达式甚至没有足够的功能来正确匹配嵌套的
{}时。即使是这样,最好编写一个适当的解析器来处理这个问题。
标签: javascript regex string ckeditor