我在正则表达式文档中没有找到针对我当前问题的解决方案。我正在使用 javascript、html。 我的代码是这样的:
var text = 'This [close](animal) is a dog';
我想使用正则表达式得到这个:
'This {animal} is a dog';
我的意思是,我想将'close'替换为{和}。 我知道,有一个解决方案,例如:
var res = text.replace('[close](','{').replace(')','}');
但就我而言,我有很多规则,我不想重复该行来这样做。有时我会使用其他替换,例如 '[ xxxxx ]'。 任何想法?谢谢!
最佳答案
您可以使用
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+'{';})
);
关于javascript - 正则表达式高级方法可替换多种表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53060390/