const regex = /{(if|foreach)\s*([^}]*[^}\s])\s*}/iug;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('{(if|foreach)\\s*([^}]*[^}\\s])\\s*}', 'iug')
const str = `{include file = "include/common/head.tpl" }
{include file = "include/common/header.default.tpl" }
{if \$content['outer']['container']['centered'] }hvcenterContainer hvcenter long{/if}
{if !\$content['inner']['payment']['payout']}
{if isset(\$content['inner']['pType']) }{\$content.inner.pType}{else}1{/if}
{language data-case="title" }31001001{/language}
{language data-case="title" }31001002{/language}
{language data-case="title" }31001003{/language}
{language}34012002{/language}
{language data-case="title" data-sublang="31001001" }21000033{/language}
{language}34012003{/language}
{language data-case="title" data-sublang="31001002" }21000033{/language}
{language}34012004{/language}
{language data-case="title" data-sublang="31001003" }21000033{/language}
{language data-case="title" }31002001{/language}
{language data-case="title" }31002002{/language}
{language data-case="title" }31002003{/language}
{language data-case="title" }31002004{/language}
{language data-case="title" }31002005{/language}
{language data-case="title" }31002006{/language}
{if \$content['inner']['pType'] == 3 && \$content['inner']['step']['count']['software'] >= 3 }active{/if}
{language}36000005{/language}
{language data-case="title" }32013010{/language}
{language}34012005{/language}
{include file = "include/project/auth.tpl" }
{language data-case="title" }21000001{/language}
{if \$content['inner']['pType'] == 1 && \$content['inner']['step']['count']['default'] >= 3 || \$content['inner']['pType'] == 2 && \$content['inner']['step']['count']['offer'] >= 3}active{/if}
{language data-case="title" }36000005{/language}
{language data-case="title" }32013003{/language}
{include file = "include/project/text.tpl" }
{language data-case="title" }21000002{/language}
{if \$content['inner']['pType'] == 1 && \$content['inner']['step']['count']['default'] >= 4 || \$content['inner']['pType'] == 2 && \$content['inner']['step']['count']['offer'] >= 4 }active{/if}
{language data-case="title" }36000005{/language}
{language data-case="title" }32013004{/language}
{language}34012006{/language}
{language data-case="title" }23005003{/language}
{\$content.inner.comment}
{language data-case="title" }21000007{/language}
{language data-case="title" }21000001{/language}
{if \$content['inner']['pType'] == 1 && \$content['inner']['step']['count']['default'] >= 5 || \$content['inner']['pType'] == 2 && \$content['inner']['step']['count']['offer'] >= 5 || \$content['inner']['pType'] == 3 && \$content['inner']['step']['count']['software'] >= 4 }active{/if}{language}36000005{/language}
{language data-case="title" }32013005{/language}
{language}34012007{/language}
{language data-case="title" }23000005{/language}
{language data-case="title" }30000003{/language}
{foreach \$content.inner.sourceLanguage.array as \$key => \$value }
{\$value}
{/foreach}
{language data-case="title" }23000006{/language}
{if isset(\$content['inner']['category']['array']) && is_array(\$content['inner']['category']['array']) && count(\$content['inner']['category']['array']) > 0}
{foreach \$content.inner.category.array as \$key => \$value }
{\$value.name}
{/foreach}
{/if}
{language data-case="title" }23000007{/language}
{if isset(\$content['inner']['targetLanguage']['array']) && is_array(\$content['inner']['targetLanguage']['array']) && count(\$content['inner']['targetLanguage']['array']) > 0}
{foreach \$content.inner.targetLanguage.array as \$key => \$value }
{\$value.name}
{/foreach}
{/if}
{if isset(\$content['inner']['projectLanguages']['array']) && is_array(\$content['inner']['projectLanguages']['array']) && count(\$content['inner']['projectLanguages']['array']) > 0}
{foreach \$content.inner.projectLanguages.array as \$key => \$value }
{\$value.name}
{/foreach}
{/if}
{language data-case="title" }21000001{/language}
{if \$content['outer']['status']['visibility'] || \$content['outer']['status']['filter'] }
{language}36000005{/language}
{language data-case="title" }32013006{/language}
{language}34012008{/language}
{include file = "include/project/filter.tpl" }
{language data-case="title" }21000007{/language}
{language data-case="title" }21000001{/language}
{/if}
{language data-case="title" }32013001{/language}
Toplam kelime sayısı : {if isset(\$content['inner']['information']['count']['word']) }{\$content.inner.information.count.word}{else}-{/if}
{language data-case="title" }39002002{/language}{language data-case="title" }39002004{/language}
{if isset(\$content['inner']['summary']['time']) }{\$content.inner.summary.time}{else}-{/if}
{language data-case="title" }39002003{/language}{language data-case="title" }39002005{/language}
{if isset(\$content['inner']['summary']['amount']['total']) }{\$content.inner.summary.amount.total}{else}0{/if}
{language data-case="title" }39002006{/language}
{if isset(\$content['inner']['summary']['amount']['text']['count']) }{\$content.inner.summary.amount.text.count}{else}0{/if}
{language data-case="title" }39002007{/language}
{if isset(\$content['inner']['summary']['amount']['discount']['count']) }{\$content.inner.summary.amount.discount.count}{else}0{/if}
{language data-case="title" }39002008{/language}
{if isset(\$content['inner']['summary']['amount']['tax']['count']) }{\$content.inner.summary.amount.tax.count}{else}0{/if}
{language data-case="title" }39002009{/language}
{if isset(\$content['inner']['summary']['amount']['gap']['count']) }{\$content.inner.summary.amount.gap.count}{else}0{/if}
{language data-case="title" }32013002{/language}
{language}39002010{/language} : -
{language data-case="title" }39002011{/language}
-
{language data-case="title" }39002012{/language}
-
{if \$content['outer']['status']['adress'] }
{language}36000005{/language}
{language data-case="title" }32013007{/language}
{include file = "include/miscellaneous/adress.tpl" }
{language data-case="title" }21000001{/language}
{/if}
{language}36000005{/language}
{language data-case="title" }32013012{/language}
{include file = "include/project/creditcard.tpl" }
{language data-case="title" }21000001{/language}
{if \$content['inner']['payment']['status'] && isset(\$content['inner']['payment']['response']) }
{\$content.inner.payment.response}
{/if}
{language}36000005{/language}
{include file = "include/miscellaneous/payment.tpl" }
{language}36000005{/language}
{language data-case="title" }32013013{/language}
{\$content.inner.message}
{language data-case="title" }21000034{/language}
{else}
{language data-case="title" }32013011{/language}
{language}34012010{/language}
{language data-case="first" data-variable="'{\$content.inner.fileCount}'" }39002023{/language}
{language data-variable="'{\$content.inner.information.count.word}'" }39002024{/language}
{language data-case="first" }39002006{/language}
{language data-variable="'{\$content.inner.projectLanguages.count}'" }39002026{/language}
{if \$content['inner']['summary']['amount']['text']['status']}
{language data-case="first" }39002006{/language}
{\$content.inner.summary.amount.text.count}
{/if}
{if \$content['inner']['summary']['amount']['discount']['status']}
{language data-case="first" }39002007{/language}
{\$content.inner.summary.amount.discount.count}
{/if}
{if \$content['inner']['summary']['amount']['tax']['status']}
{language data-case="first" }39002008{/language}
{\$content.inner.summary.amount.tax.count}
{/if}
{if \$content['inner']['summary']['amount']['gap']['status']}
{language data-case="first" }39002009{/language}
{\$content.inner.summary.amount.gap.count}
{/if}
{language data-case="first" }39002027{/language}
{\$content.inner.summary.amount.total}
{language data-case="title" }21000020{/language}
{language data-case="title" }21000021{/language}
{/if}
{include file = "include/common/footer.long.tpl" }
{include file = "include/common/foot.tpl" }`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions