我有如下html内容。我想将“ {
”替换为“ {{
”,将“ }
”替换为“ }}
”。但是我想在样式标签中保留单个大括号。
注意:我使用的是javascript,因为它存储在db中,所以我从数据库中读取html内容。
<html>
<head>
<style type="text/css" rel="stylesheet" media="all">
p {
font-size: 14px;
}
</style>
</head>
<body>
<p>My name is {name}</p>
<p>My age is {age}</p>
</body>
预期输出如下。
<html>
<head>
<style type="text/css" rel="stylesheet" media="all">
p {
font-size: 14px;
}
</style>
</head>
<body>
<p>My name is {{name}}</p>
<p>My age is {{age}}</p>
</body>
答案 0 :(得分:1)
尝试一下
let str = `<html>
<head>
<style type="text/css" rel="stylesheet" media="all">
p {
font-size: 14px;
}
</style>
</head>
<body>
<p>My name is {name}</p>
<p>My age is {age}</p>
</body>`;
console.log(str.replace(/({|})(?=[^.{1}\s*])/g, "$1$1"));
答案 1 :(得分:1)
也许这个正则表达式会有所帮助:
str.replace(/\{(\w+)\}/gm, "{{$1}}")
请参见Regex101上的this
let str = `<html>
<head>
<style type="text/css" rel="stylesheet" media="all">
p {
font-size: 14px;
}
</style>
</head>
<body>
<p>My name is {name}</p>
<p>My age is {age}</p>
</body>`;
console.log(str.replace(/\{(\w+)\}/gm, "{{$1}}"))
此正则表达式将搜索大括号中包含的任何单个字母数字字符串。括号捕获了这个内部的“单词”。所有这些都被捕获的单词替换,并用双花括号将其括起来。
任何打开的花括号后跟空格或换行符都将不匹配。