javascript - 正则表达式高级方法可替换多种表达式

标签 javascript regex replace

我在正则表达式文档中没有找到针对我当前问题的解决方案。我正在使用 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} 替换是用大括号括起来的捕获组的内容。

如果 [...] 内只能有两个值 - closeopen,请替换 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/

相关文章:

python - 如何有选择地填充使用较少时间的 na 值 30,800 个数据点

javascript - 将 .CSV 数据导入 Javascript 并在字符串包含数据时运行执行

javascript - 使用 turn.js 垂直翻转

java - Java 中管道字符的匹配

arrays - 使用正则表达式 Perl 搜索数组

javascript - JavaScript 中删除字符串分隔符的有效方法

php - 用不同的值替换多次出现的字符串

javascript - 为什么我不能在 JavaScript if 条件中执行 “or” ?

javascript - 在没有类的情况下使用 componentWillMount

c# - 使用正则表达式解码 FMD 条形码