问题:我想获取所有方括号的内容,然后将其删除,但前提是括号位于字符串的beginnig。
例如,给定字符串[foo][asd][dsa] text text text
将返回包含所有三个括号内容(["foo", "asd", "dsa"]
)的数组,字符串将变为text text text
。
但是如果字符串看起来像这样:[foo] text [asd][dsa] text text
,它只需要[foo]
,字符串将变为:text [asd][dsa] text text
。
我怎样才能使用JavaScript?
答案 0 :(得分:2)
循环检查字符串的开头是否为方括号中的任何内容,取括号内容,并从头开始删除整个批次。
var haystack = "[foo][asd][dsa] text text text";
var needle = /^\[([^\]]+)\](.*)/;
var result = new Array();
while ( needle.test(haystack) ) { /* while it starts with something in [] */
result.push(needle.exec(haystack)[1]); /* get the contents of [] */
haystack = haystack.replace(needle, "$2"); /* remove [] from the start */
}
答案 1 :(得分:1)
像var newstring = oldstring.replace(/\[\w{3}]/, "");
答案 2 :(得分:1)
你可以继续使用一段时间,拿第一个,将它添加到一个数组,删除它然后再做一遍。这样就可以了:
var t1 = "[foo][asd][dsa] text text text";
var rule = /^(?:\[([^\]]*)\])/g;
var arr = new Array();
while(m = rule.exec(t1)){
arr.push(m[1]);
t1 = t1.replace(rule, "")
}
alert(arr); // foo,asd,dsa
alert(t1); // text text text