JS:替换包含不同值的字符串

swi*_*osz -1 javascript regex string replace

我有这个挑战:

我需要用这个替换这个字符串"[[OM:random-string-id]]"'<div id="random-string-id"></div>'

其中 OM 是要替换的组件 TYPE,而 random-string-id 是一个 id。两个部分都可以是动态的,我只需要用类型替换组件:'OM'。

# pseudocode

var text = [[$A:$B]] # this can be: "[[OM:something]]", "[[AD:somethingelse]]"

if ($A == 'OM') {
  text = text.replace(<div id='$B'></div>)
}
Run Code Online (Sandbox Code Playgroud)

输入:[[OM:something]] => Output: "<div id='something'></div>" 输入:[[AD:somethingelse]] => Output: "[[AD:somethingelse]]"

最好的处理方法是什么?

ibr*_*cin 5

使用内置替换的替换功能:

let str = "[[OM:random-string-idadsad]]"

str = str.replace(/^\[\[([A-Z]+):(.*)\]\]$/i, function(match, group1, group2, offset, string) {
  if (!group1 || !group2) { //or check arguments.length, if less than 5 return..
    return;
  }
  if (group1.toUpperCase() === "OM") {
    return "<div id='" + group2 + "'></div>"
  } else {
    return string;
  }
})

console.log(str)
Run Code Online (Sandbox Code Playgroud)