我没有在 regex的文档中找到解决当前问题的解决方案。我正在使用javascript,html。 我的代码是这样的:
var text = 'This [close](animal) is a dog';
我想使用 regex 来获取此信息:
'This {animal} is a dog';
我的意思是,我想将“关闭” 替换为 {和} 。 我知道,有类似的解决方案:
var res = text.replace('[close](','{').replace(')','}');
但就我而言,我有很多规则,并且我不想重复该行。有时我正在使用其他替代方法,例如'[xxxxx]'。 任何想法?谢谢!
答案 0 :(得分:3)
您可以使用
var text = 'This [close](animal) is a dog';
console.log(text.replace(/\[[^\][]*]\(([^()]*)\)/g, '{$1}'));
请参见regex demo。
详细信息
\[
-一个[
字符[^\][]*
-除[
和]
以外的0个或更多字符]\(
-一个](
子字符串([^()]*)
-捕获组1:除(
和)
之外的0个或更多字符\)
-一个)
字符。 {$1}
替换项是用括号括起来的捕获组的内容。
如果在close
内只能有两个值-open
和[...]
,然后将close
替换为{...}
和open
}...{
,您可以使用
var text = '[open](animal)This [close](animal) is a dog';
console.log(text.replace(/\[(open|close)]\(([^()]*)\)/g, function($0, $1, $2) {
return $1==='close' ? '{'+$2+'}' : '}'+$2+'{';})
);
答案 1 :(得分:0)
别忘了,您可以在Array.prototype.replace
中传递自定义正则表达式。在您的情况下,它将为text.replace(/[close](/g,'{')
。您问题的完整解决方案将如下所示:
var res = res.replace(/\[\w+\]\((.*)\)/, (a, b) => {
console.log(a, b);
return `{${b}}`;
});
.*
周围的方括号用于“捕获”变量b
内的动物
答案 2 :(得分:0)
谢谢Wiktor,我已经找到了您所说的解决方案
var res0 = text.replace(/\[close]\(([^()]*)\)/g, '{$1}');
var res1 = text.replace(/\[open]\(([^()]*)\)/g, '}$1{');
对不起,如果我做错了,我不习惯用英语表达:-)