如何在RegExp javascript中放置[](方括号)?

ily*_*lyo 29 javascript regex

我正在尝试这个:

str = "bla [bla]";
str = str.replace(/\\[\\]/g,"");
console.log(str);
Run Code Online (Sandbox Code Playgroud)

替换不起作用,我做错了什么?

更新:我正在尝试删除字符串中的任何方括号,如果我这样做,那有多奇怪

replace(/\[/g, '')
replace(/\]/g, '')
Run Code Online (Sandbox Code Playgroud)

它有效,但
replace(/\[\]/g, '');
没有.

Rud*_*udu 46

它应该是:

str = str.replace(/\[.*?\]/g,"");
Run Code Online (Sandbox Code Playgroud)

你并不需要双反斜线(\),因为它不是一个字符串,而是一个正则表达式语句,如果你建立你从一个字符串,正则表达式需要双反斜线).

它也字面上解释了1(不匹配).使用.*方括号之间的任何值.

新的RegExp字符串构建版本将是:

str=str.replace(new RegExp("\\[.*?\\]","g"),"");
Run Code Online (Sandbox Code Playgroud)

更新:仅删除方括号:

str = str.replace(/\[(.*?)\]/g,"$1");
Run Code Online (Sandbox Code Playgroud)

你的上面的代码不起作用,因为它试图匹配"[]"(顺序没有任何允许).我们可以通过非贪婪的组匹配来解决这个问题((.*?))方括号之间的内容,并使用反向引用($1)进行替换.

更新2:删除多个方括号

str = str.replace(/\[+(.*?)\]+/g,"$1");
// bla [bla] [[blaa]] -> bla bla blaa
// bla [bla] [[[blaa] -> bla bla blaa
Run Code Online (Sandbox Code Playgroud)

请注意,这与打开/关闭数量不匹配,只需删除所有顺序打开和关闭.此外,如果顺序括号有分隔符(空格等),它将不匹配.

  • 你的解决方案不会删除所有括号,因为那里有贪婪的".*".你无论如何都不需要它 - 只是`str.replace(/ [\ [\ _]]/g,'')` (6认同)

Hri*_*sto 7

您必须转义括号,例如\[\]。查看http://regexpal.com/。它非常有用:)

要替换字符串中的所有括号,这应该可以完成以下工作:

str.replace(/\[|\]/g,'');
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助。
赫里斯托