在具有新行和制表符的多行中替换字符串

时间:2018-10-25 13:26:29

标签: javascript regex

这是原始代码,

<View style={[styles.container, { width, height }]}>
  <View style={[styles.imageContainer, imageContainerStyles]}>{image}</View>
  {titleElement}
  {subtitleElement}
</View>

我想使用javascript replace()看起来像这样

<View style={[styles.container, { width, height }]}>
  <View>{image}</View>
</View>

基本上,我只想删除{titleElement}和{subtitleElement}并保持图像没有样式。

由于这些行都有新行并带有制表符缩进,所以我尝试这样做,

const result = data.replace(/<View style={\[styles\.imageContainer, 
      imageContainerStyles]}>{image}<\/View>\n\t{titleElement}\n\t{subtitleElement}/g, 
  '<View>{image}</View>');

但是它不起作用。这是我第一次使用正则表达式,但遇到了麻烦。

1 个答案:

答案 0 :(得分:0)

我改写了您的正则表达式,基本上我进行了更多的转义,并将您的'Newlines'和'tabs'更改为'\s*?'。这将匹配任意数量的White Space个字符。

现在,它可以与您的替代品一起使用。这是正则表达式:

/\<View style=\{\[styles\.imageContainer,\s*?imageContainerStyles\]\}\>\{image\}\<\/View>\s*?\{titleElement\}\s*?\{subtitleElement\}/

只需按原样使用替换字符串即可。