删除字符串

时间:2016-07-13 13:20:15

标签: javascript regex

我想从字符串的开头和结尾删除方括号,如果它们存在的话。

[Just a string]
Just a string
Just a string [comment]
[Just a string [comment]]

应该导致

Just a string
Just a string
Just a string [comment]
Just a string [comment]

我试图建立一个正则表达式,但我没有以正确的方式得到它,因为它没有寻找位置:

string.replace(/[\[\]]+/g,'')

3 个答案:

答案 0 :(得分:9)

string.replace(/^\[(.+)\]$/,'$1')

应该这样做。

  • ^匹配字符串的开头
  • $匹配字符串的结尾。
  • (.+)匹配其间的所有内容,并将其报告回最终字符串。

答案 1 :(得分:0)

可能是一个更好的reg exp来做,但基本的是:

var strs = [
  "[Just a string]",
  "Just a string",
  "Just a string [comment]",
  "[Just a string [comment]]"
];

var re = /^\[(.+)\]$/;
strs.forEach( function (str) {
  var updated = str.replace(re,"$1");
  console.log(updated);
});

Reg Exp Visualizer

答案 2 :(得分:0)

Blue112提供了一个解决方案,可以从的开头/结尾删除[](如果两者都存在的话)。

要从字符串的开头/结尾删除[](如果两者都存在),您需要

input.replace(/^\[([\s\S]*)]$/,'$1')

input.replace(/^\[([^]*)]$/,'$1')

在JS中,为了匹配包含换行符的任何符号,您可以使用[\s\S](或[\w\W][\d\D])或[^]匹配任何非什么也没有

var s = "[word  \n[line]]";
console.log(s.replace(/^\[([\s\S]*)]$/, "$1"));