为什么';这个JavaScript函数不能逐个删除方括号吗? var asdf=“a[3]>b[5]>c[1]” 函数removebracket(){ var newstring=asdf.replace(/\/[^\/]*$/,“”) 警报(新闻字符串); }

为什么';这个JavaScript函数不能逐个删除方括号吗? var asdf=“a[3]>b[5]>c[1]” 函数removebracket(){ var newstring=asdf.replace(/\/[^\/]*$/,“”) 警报(新闻字符串); },javascript,regex,Javascript,Regex,您的正则表达式不会执行类似于删除方括号的操作—它看起来像是用于从路径中删除部分。 这将删除方括号: var asdf = "a[3] > b[5] > c[1]" function removebracket(){ var newstring = asdf.replace(/\/[^\/]*$/, '') alert(newstring); } <a href="#" onClick="javascript:removebracket();"> remove squa

您的正则表达式不会执行类似于删除方括号的操作—它看起来像是用于从路径中删除部分。 这将删除方括号:

var asdf = "a[3] > b[5] > c[1]"

function removebracket(){
var newstring = asdf.replace(/\/[^\/]*$/, '')
alert(newstring);
}

<a href="#" onClick="javascript:removebracket();"> remove square brackets one by one </a>

对您的正则表达式进行一点解释:

var newstring = asdf.replace(/\[|\]/g, '');
第一个和最后一个
/
之间的字符串是正则表达式

/\/[^\/]*$/
这里的
\/
/
匹配,因为
\
用于转义特殊字符,如
/

\/[^\/]*$
方括号
[]
之间的所有内容都将恰好匹配一个字符<括号内的code>^表示它将匹配除下一个字符以外的所有字符。因此,
[^\/]
将匹配除
/
之外的所有内容

\/[^\/]*$
*
与前一个字符的零个或多个匹配

最后,
$
匹配字符串或换行符的结尾


将它与
/foo/bar
一起使用,您将得到
/foo

实际上,我需要在每次迭代中删除最后一个方括号