我的字符串结构如下:
anyOfAny(function[stringEqual], Attributes.access_subject.subject_id, stringOneAndOnly(Attributes.resource.resource_id) + "-edit")
我想用let originalString = "I am a [h:12[x] with [l:3[y] and also with [m[z] which i want to replace."
和[m [z]到<span class="h">x</span>
替换序列[h:12 [x]。
结果字符串应如下所示。
<span class="m">z</span>
答案 0 :(得分:3)
一种选择是使用正则表达式匹配[h:12[x]
之类的子字符串,提取第一个[
和第二个span
之后的单词字符,然后用const originalString = "I am a [h:12[x] with [l:3[y] and also with [m[z] which i want to replace.";
const output = originalString.replace(
/\[(\w+)[^\[]*\[(\w+)\]/g,
(_, g1, g2) => `<span class="${g1}">${g2}</span>`
);
console.log(output);
HTML文本替换,在适当的位置插入的那些组:
/\[(\w+)[^\[]*\[(\w+)\]/
模式\[
的意思是:
[
-匹配文字(\w+)
[^\[]*
-捕获一个组中的一个或多个单词字符
[
-匹配零个或多个非\[
字符
[
-再次匹配文字(\w+)
\]
-捕获再次在一个组中捕获一个或多个单词字符
]
-匹配文字{{1}}