将[h:12 [x]替换为<span class =“ h”> x </span>

时间:2018-11-28 09:04:03

标签: javascript regex

我的字符串结构如下:

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>

1 个答案:

答案 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}}