var chunker = /((?: \((?:\([^()]+\)|[^()]+)+\)|\[(?:\[^\[\]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g;
¥1 = \((?:\([^()]+\)|[^()]+)+\) // 不含有括号,或被括号包裹但包裹内容中没有括号的字符串,(abc)、(a(bc))
¥2 = \[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]
(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+ // [xxx] 、'xxx'、"xxx"、xxx,其中x为不含有'、"、[、]的元素
¥3 = [^ >+~,(\[\\]+ // 不含有空格、>、+、~、,、(、[、\的元素
X = ((?:¥1|¥2|\\.|¥3)+|[>+~])(\s*,\s*)? ((?:.|\r|\n)*)
$1 = (元素|[>+~])
$2 = 空格,空格
$3 = 剩下的部分或者\n\r
do {
chunker.exec( "" );
m = chunker.exec( soFar );
if ( m ) {
soFar = m[3];
parts.push( m[1] );
if ( m[2] ) {
extra = m[3];
break;
}
}
} while ( m );
old sizzle - chuck
最新推荐文章于 2020-03-30 21:48:01 发布