正则表达式 - 如何删除括号内的字符串?

时间:2015-02-14 17:00:22

标签: javascript regex

我想删除括号和方括号内的所有单词。 我正在使用这个正则表达式,但它只删除括号内的单词。它不适用于方括号......

var str = 'hey [xx] (xhini) rexhin (zzz)';
var r = str.replace(/ *\([^)]*\)*\] */g, '');

r应为hey rexhin

有什么建议吗?

2 个答案:

答案 0 :(得分:6)

您可以使用此正则表达式:

var str = 'hey [xx] (xhini) rexhin (zzz)';
var r = str.replace(/(\[.*?\]|\(.*?\)) */g, "");
//=> hey rexhin
  • \[.*?\]会在其中找到方括号和字符串
  • \(.*?\)会在其中找到圆括号和字符串

您也可以使用(如果方括号和圆括号不嵌套):

var r = str.replace(/[(\[].*?[)\]] */g, "");
  • [(\[]是一个找到([
  • 的字符类
  • [)\]]是一个找到)]
  • 的字符类

您也可以调用trim()来修剪尾随空格。

答案 1 :(得分:1)

您可以尝试下面的正则表达式。

> var str = "[xxx] hey [xx] (xhini) rexhin (zzz)";
undefined
> str.replace(/^(?:\[[^\]]*\]|\([^()]*\))\s*|\s*(?:\[[^\]]*\]|\([^()]*\))/g, "")
'hey rexhin'

DEMO

  • ^(?:\[[^\]]*\]|\([^()]*\))\s*会匹配括号以及开头时出现的以下空格(行的开头)。

  • |

  • \s*(?:\[[^\]]*\]|\([^()]*\))匹配所有剩余的括号及其前面的空格。