js分割字符串代码
"abc|abc()|abc(a)|abc(a|b)" 如何按 | 分割 但是过滤掉()内的 | 即分隔成 分割成 abc abc() abc(a) abc(a|b)
s="abc|abc()|abc(a)|abc(a|b)";
alert( s.match(/\w+\(.*?\)|\w+/g) );
var a="abc|abc()|abc(a)|abc(a|b)";
var reg=/\|(?!\w\))/;
a=a.split(reg);
alert(a.join("\n"));
只适合你这个例子
.*?,的后面的所有字符0~n个非贪婪模式,后面的能匹配就留给后面的
s="abc|abc()|abc(a)|abc(a|b)abc"; s=s.replace(/\((\w+)\|(\w+)\)/g,'($1\3\$2)').replace(/(?:(\w+\([^\|]*?\)[^|]*)|(\w+))\|?/g, function(_,s1,s2){return (s1||s2).replace(/\3/g,'-')+'\n' }); alert(s);