node.js - 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("}}}", "}} }")
解决方案
String.replace 函数自动将第一个字符串参数转换为正则表达式(没有全局选项集)。这就是为什么只替换第一次出现的原因。如果要替换所有出现的模式,可以创建一个带有全局选项集的正则表达式。试试下面的代码片段。
css = css.replace(/{{{/g, '{ {{').replace(/}}}/g, '}} }')
推荐阅读
- python-2.7 - 使用 python 脚本在打开的命令提示符窗口中输入命令
- react-native - 使用 React-native 0.56 进行正确的 Jest 配置
- android - Xamarin.Forms 依赖和 Android 编译 sdk 版本
- java - 为什么java方法不能循环工作
- c++ - 告诉 dlopen 先在哪个库中搜索符号
- java - Spring Jpa 更新:无法使用 executeQuery() 发出数据操作语句
- java - Spring Boot 从战争转移到 jar
- amazon-web-services - 在 lambda 上将 AWS AppSync (+ Cognito) Schema 与 Graphene django 集成
- android - 删除 AutoCompleteTextView 左填充
- c# - 在 Xamarin.Android 中解析 json 请求