首页 > 解决方案 > node.js - 正则表达式:在三重胡须之间放置空格( {{{ => { {{ )

问题描述

我有一个字符串,其中包含缩小的 CSS 和 handlebars.js 符号(if 语句、变量等)。因为字符串被缩小了,所以它还包含'{{{' or '}}}'我需要替换的东西'{ {{' or '}} }'(在它们之间放置一个空格),以便通过把手正确编译它。

麻烦的是我无法为这个简单的任务将正确的正则表达式放在一起。我猜 { 符号使整个事情变得困难,因为它是一个正则表达式特定的字符。

细绳:

.class1{{{#if style.textColor}}color:{{style.textColor}};{{/if}}}item-price{{{#if style.showPrice}}display:block;{{else}}display:none;{{/if}}{{#if style.fontSizeItemPrice}}font-size:{{style.fontSizeItemPrice}}px;{{/if}}}

预期输出:

.class1{ {{#if style.textColor}}color:{{style.textColor}};{{/if}} }item-price{ {{#if style.showPrice}}display:block;{{else}}display:none;{{/if}}{{#if style.fontSizeItemPrice}}font-size:{{style.fontSizeItemPrice}}px;{{/if}} }

简单地替换三重胡须有效,但仅适用于第一次出现:

css = css.replace("{{{", "{ {{");
css = css.replace("}}}", "}} }")

标签: node.jsregexhandlebars.js

解决方案


String.replace 函数自动将第一个字符串参数转换为正则表达式(没有全局选项集)。这就是为什么只替换第一次出现的原因。如果要替换所有出现的模式,可以创建一个带有全局选项集的正则表达式。试试下面的代码片段。

css = css.replace(/{{{/g, '{ {{').replace(/}}}/g, '}} }')


推荐阅读