有一个字符串,按照一定格式分隔为数组,例:var a='a b:{a:"a b c"} c d:{a:"a b c",b:"x y"} e',b;
var reg=/ /;//正则表达式,以空格为分隔符,注意{}中的空格,任意一对{}中的空格都不参与分割
b=a.split(reg);//需要得到结果为['a','b:{a:"a b c"}','c','d:{a:"a b c",b:"x y"}','e']a="b:{a:'a b c'}";
reg=/ /;//正则表达式,以第一个':'为分隔符,只是第一个':'
b=a.split(reg);//需要得到的结果为['b','{a:"a b c"}']
var reg=/ /;//正则表达式,以空格为分隔符,注意{}中的空格,任意一对{}中的空格都不参与分割
b=a.split(reg);//需要得到结果为['a','b:{a:"a b c"}','c','d:{a:"a b c",b:"x y"}','e']a="b:{a:'a b c'}";
reg=/ /;//正则表达式,以第一个':'为分隔符,只是第一个':'
b=a.split(reg);//需要得到的结果为['b','{a:"a b c"}']
貌似JS正则不支持 (?<!) 2.可不可以理解为 {} 内的 : 不参与分组?
var r = /(.*):({.*})/;
a = r.test(a);
var arr = new Array(RegExp.$1, RegExp.$2);
alert(arr)
var a='a b:{a:"a b c"} c d:{a:"a b c",b:"x y"} e';
a='}'+a+'{';
a=a.replace(/\}([^\{\}]*)\{/g,function (){return '}'+arguments[1].replace(/ /g,'\\ ')+'{';});
a=a.replace(/^}|{$/g,'');
alert(a.split(/\\ /).join('----'));我加了一个"\"区分大括号外面的空格 LZ可以根据具体情况换成其他
第二个 类似于第一个 把" "格换成":"就行了
var a="b:{a:'a b c'}";
reg=/:(?=.*$)/;
b=a.split(reg);
alert(b);
var a='a b:{a:"a b c"} c d:{a:"a b c",b:"x y"} e',b;
var reg=/(\w+:\{.*?\})|(\w+)/g;
var b = [];
var match;while( match = reg.exec(a) ){
b.push(match[0]);
}alert(b.join(' | '));var c = [], s="b:{a:'a b c'}", index = s.indexOf(':') ;
if( index > -1 ){
c.push(s.slice(0, index));
if( index < s.length - 1 ){
c.push(s.slice(index+1))
}
}else{
c.push[s];
}alert(c.join(' | '));
var str = 'a b:{a:"a b c"} c d:{a:"a b c",b:"x y"} e';
str = str.replace(regex,"~").split("~")
document.write("['"+str.join("','")+"']");//数组
//['a','b:{a:"a b c"}','c','d:{a:"a b c",b:"x y"}','e']
//---------------
document.write("<br/>")
str = "b:{a:'a b c'}";
str = str.split(/\:(?=\{)/);//数组
document.write('["'+str.join('","')+'"]')
//["b","{a:'a b c'}"]
var objs=test.match(reg);
test=test.replace(reg,'');//其他类型的元素……
reg=/ /;
objs=test.match(reg);
test=test.replace(reg,'');……至于第二个,就像7楼说的,建议使用replace替换掉第一个冒号再分割吧