如何正则表达式方括号?

时间:2013-04-15 09:38:37

标签: javascript regex

问题:我想获取所有方括号的内容,然后将其删除,但前提是括号位于字符串的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?

3 个答案:

答案 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