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

Javascript JS:替换包含不同值的字符串,javascript,regex,string,replace,Javascript,Regex,String,Replace,我面临这个挑战: 我需要用以下字符串替换此字符串:“[[OM:随机字符串id]]”:” 其中,OM是要替换的组件类型,随机字符串id是id。这两个部分都可以是动态的,我只需要将组件替换为类型:“OM” #伪代码 var text=[$A:$B]]#这可以是“[[OM:something]]”,“[[AD:somethingelse]]” 如果($A='OM'){ text=text.replace() } 输入:[[OM:something]=>输出:“ 输入:[[AD:somethingel

我面临这个挑战:

我需要用以下字符串替换此字符串:
“[[OM:随机字符串id]]”

其中,OM是要替换的组件类型,随机字符串id是id。这两个部分都可以是动态的,我只需要将组件替换为类型:“OM”

#伪代码
var text=[$A:$B]]#这可以是“[[OM:something]]”,“[[AD:somethingelse]]”
如果($A='OM'){
text=text.replace()
}
输入:
[[OM:something]=>输出:“
输入:
[[AD:somethingelse]]=>输出:“[[AD:somethingelse]]”


最好的处理方法是什么?

名称描述了错误的类型,以及.name的值可以是:EvalError、RangeError、ReferenceError、SyntaxError、TypeError和URIError。根据.name属性返回的错误类型,您可以决定以不同的方式处理错误。

使用内置replace的replacer函数:

let str=“[[OM:随机字符串idadsad]]”
str=str.replace(/^\[\[([A-Z]+):(.*)\]\]$/i,函数(匹配,组1,组2,偏移量,字符串){
如果(!group1 | |!group2){//或检查arguments.length,如果小于5,则返回。。
回来
}
if(group1.toUpperCase()=“OM”){
返回“”
}否则{
返回字符串;
}
})
console.log(str)
关于regx

<代码>/^\[\[OM\:([^\]]+)\]\]\]$/

  • 首先一个
    trim
    s每个字符串。。。然后

  • /^$/。。。从字符串的开头到结尾查找

  • \[\[OM\:
    …两个开口括号后跟
    OM
    和一个
    …然后
  • ([^\]]+)
    …捕获/记住非
    ]
    的任何字符序列
  • 接着是<代码>\]\]两个右括号
函数替换某物(str){
返回阀内件()。更换(
(/^\[\[OM\:([^\]]+)\]\]\]$/),
((…结果)=>``)
);
}
常量listOfInputValues=['[[OM:somethingelse]'、[[AD:somethingelse]]、[[OM:somethingelse]]、[[AD:somethingelse]]];
const listOfOutputValues=listOfInputValues.map(replaceSomething);
log('listoOutputValues:',listoOutputValues)

作为控制台包装{min height:100%!important;top:0;}
对不起,我完全没有领会你的意思。你是说问题的题目吗?你的回答似乎与我的问题无关。我描述了我有一个字符串作为输入,转换后的字符串作为输出-没有对象,没有属性等。只有两个字符串。看起来你把这个答案发布到了一个错误的帖子?。。。regx和替换逻辑对于OP所寻找的内容都是不必要的复杂,如果一个完全遵循提供的信息。。。“…我只需要将组件替换为“OM”类型。”建议的解决方案是可扩展和模块化的。您的es6代码可能会运行得较慢,因为它包含了解构。而且它是不灵活的,因为您硬编码了“OM”。装箱会把它弄坏的。在ie11中不起作用。我可以继续吗?字符串替换会变成美德信号。舞台是你的,彼得,我不干了。