我想从字符串的开头和结尾删除方括号,如果它们存在的话。
[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,'')
答案 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);
});
答案 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"));