(function(window){ //简写 var _filter = [ {//自己是女性,女儿或儿子的妈妈是自己 exp:/(,[mwd]|([olx]s)),[ds](&[ol])?,m/g, str:'$1' }, {//自己是女性,女儿或儿子的爸爸是自己的丈夫 exp:/(,[mwd]|([olx]s)),[ds](&[ol])?,f/g, str:'$1,h' }, {//自己是男性,女儿或儿子的爸爸是自己 exp:/(,[fhs]|([olx]b)),[ds](&[ol])?,f/g, str:'$1' }, {//自己是男性,女儿或儿子的妈妈是自己的妻子 exp:/(,[fhs]|([olx]b)),[ds](&[ol])?,m/g, str:'$1,w' }, {//夫妻的孩子就是自己的孩子 exp:/,[wh],([ds])/g, str:',$1' }, {//夫妻的对方是自己 exp:/(,w,h)|(,h,w)/g, str:'' }, {//兄弟的父母就是自己的父母 exp:/[xol][sb],([mf])/g, str:'$1' }, {//母亲的丈夫是自己的父亲 exp:/m,h/g, str:'f', }, {//父亲的妻子是自己的母亲 exp:/f,w/g, str:'m', }, {//孩子的姐妹是自己的女儿 exp:/,[ds](&[ol])?,[olx]s/g, str:',d', }, {//孩子的兄弟是自己的儿子 exp:/,[ds](&[ol])?,[olx]b/g, str:',s', }, {//如果自己是男性,兄弟姐妹的兄弟就是自己的兄弟或自己 con:/(,[fhs]|([olx]b)),[olx][sb],[olx]b/, exp:/^(.+)?,[olx][sb],[olx]b(.+)?$/, str:'$1,xb$2#$1$2', }, {//如果自己是女性,兄弟姐妹的兄弟就是自己的兄弟 con:/(,[mwd]|([olx]s)),[olx][sb],[olx]b/, exp:/,[olx][sb],[olx]b/, str:',xb', }, {//如果自己是男性,兄弟姐妹的姐妹就是自己的姐妹 con:/(,[fhs]|([olx]b)),[olx][sb],[olx]s/, exp:/,[olx][sb],[olx]s/, str:',xs', }, {//如果自己是女性,兄弟姐妹的姐妹就是自己的姐妹或自己 con:/(,[mwd]|([olx]s)),[olx][sb],[olx]s/, exp:/^(.+)?,[olx][sb],[olx]s(.+)?$/, str:'$1,xs$2#$1$2', }, {//如果自己是男性,父母的儿子是自己或者兄弟 con:/(,[fhs]|([olx]b)),[mf],s/, exp:/^(.+),[mf],s(.+)$/, str:'$1$2#$1,xb$2' }, {//如果自己是女性,父母的女儿是自己或者姐妹 con:/(,[mwd]|([olx]s)),[mf],d/, exp:/^(.+),[mf],d(.+)$/, str:'$1$2#$1,xs$2' }, {//如果自己是女性,父母的儿子是自己或者兄弟 con:/(,[mwd]|([olx]s)),[mf],s/, exp:/,[mf],s/, str:',xb' }, {//如果自己是男性,父母的女儿是自己或者姐妹 con:/(,[fhs]|([olx]b)),[mf],d/, exp:/,[mf],d/, str:',xs' }, {//父母的女儿是姐妹 exp:/^,[mf],s$/, str:',#,xb' }, {//父母的女儿是自己或者姐妹 exp:/^,[mf],d$/, str:',#,xs' } ]; var _data = { '':['自己'], //外家 'm,m':['外婆','姥姥'], 'm,f':['外公','姥爷'], 'm,m,m':['太姥姥'], 'm,m,f':['太姥爷'], 'm,m,xs':['姨姥姥'], 'm,m,xs,w':['姨姥爷'], 'm,m,xb':['舅姥爷'], 'm,m,xb,w':['舅姥姥'], 'm,f,m':['太姥姥'], 'm,f,f':['太姥爷'], 'm,f,xs':['姑姥姥'], 'm,f,xs,h':['姑姥爷'], 'm,f,ob':['大姥爷'], 'm,f,lb':['小姥爷'], 'm,f,xb':['xx姥爷'], 'm,f,xs,s':['表舅'], 'm,f,xs,s,w':['表舅妈'], 'm,m,xs,s':['表舅'], 'm,m,xs,s,w':['表舅妈'], 'm,m,xb,s':['表舅'], 'm,m,xb,s,w':['表舅妈'], 'm,f,xb,s':['堂舅'], 'm,f,xb,s,w':['堂舅妈'], //舅家 'm,xb':['舅舅','舅','娘舅'], 'm,xb,w':['舅妈','舅母','二舅妈','三舅妈'], 'm,xb,s&o':['表哥(舅家)','表哥'], 'm,xb,s&o,w':['表嫂(舅家)','表嫂'], 'm,xb,s&l':['表弟(舅家)','表弟'], 'm,xb,s&l,w':['表弟媳(舅家)','表弟媳'], 'm,xb,s,s':['表侄子'], 'm,xb,s,d':['表侄女'], 'm,xb,d&o':['表姐(舅家)','表姐'], 'm,xb,d&o,h':['表姐夫(舅家)','表姐夫'], 'm,xb,d&l':['表妹(舅家)','表妹'], 'm,xb,d&l,h':['表妹夫(舅家)','表妹夫'], 'm,xb,d,s':['表外甥'], 'm,xb,d,d':['表外甥女'], 'm,ob':['大舅'], 'm,ob,w':['大舅妈'], 'm,lb':['小舅'], 'm,lb,w':['小舅妈'], //姨家 'm,xs':['姨妈','姨姨','姨'], 'm,xs,h':['姨父','姨丈'], 'm,xs,s&o':['表哥(姨家)','表哥'], 'm,xs,s&o,w':['表嫂(姨家)','表嫂'], 'm,xs,s&l':['表弟(姨家)','表弟'], 'm,xs,s&l,w':['表弟媳(姨家)','表弟媳'], 'm,xs,s,s':['表侄子'], 'm,xs,s,d':['表侄女'], 'm,xs,d&o':['表姐(姨家)','表姐'], 'm,xs,d&o,h':['表姐夫(姨家)','表姐夫'], 'm,xs,d&l':['表妹(姨家)','表妹'], 'm,xs,d&l,h':['表妹夫(姨家)','表妹夫'], 'm,xs,d,s':['表外甥'], 'm,xs,d,d':['表外甥女'], 'm,os':['大姨','大姨妈'], 'm,os,h':['大姨父','大姨丈','大姨夫'], 'm,ls':['小姨','小姨妈'], 'm,ls,h':['小姨父','小姨丈','小姨夫'], //姑家 'f,xs':['姑妈','姑姑','姑'], 'f,xs,h':['姑父','姑丈'], 'f,xs,s&o':['表哥(姑家)','表哥'], 'f,xs,s&o,w':['表嫂(姑家)','表嫂'], 'f,xs,s&l':['表弟(姑家)','表弟'], 'f,xs,s&l,w':['表弟媳(姑家)','表弟媳'], 'f,xs,s,s':['表侄子'], 'f,xs,s,d':['表侄女'], 'f,xs,d&o':['表姐(姑家)','表姐'], 'f,xs,d&o,h':['表姐夫(姑家)','表姐夫'], 'f,xs,d&l':['表妹(姑家)','表妹'], 'f,xs,d&l,h':['表妹夫(姑家)','表妹夫'], 'f,xs,d,s':['表外甥'], 'f,xs,d,d':['表外甥女'], 'f,os':['姑母'], 'f,ls':['姑姐'], //本家 'f,xb,s&o':['堂哥'], 'f,xb,s&o,w':['堂嫂'], 'f,xb,s&l':['堂弟'], 'f,xb,s&l,w':['堂弟媳'], 'f,xb,s,s':['堂侄子'], 'f,xb,s,d':['堂侄女'], 'f,xb,d&o':['堂姐'], 'f,xb,d&o,h':['堂姐夫'], 'f,xb,d&l':['堂妹'], 'f,xb,d&l,h':['堂妹夫'], 'f,xb,d,s':['堂外甥'], 'f,xb,d,d':['堂外甥女'], 'f,ob':['伯父','伯伯','大伯'], 'f,ob,w':['伯母','大娘'], 'f,lb':['叔叔','叔父','叔'], 'f,lb,w':['婶婶','婶'], 'f,f,xs,s&o,':['表伯'], 'f,f,xs,s&l,':['表叔'], 'f,f,xs,s,w':['表婶'], 'f,m,xs,s&o':['表伯'], 'f,m,xs,s&l':['表叔'], 'f,m,xs,s,w':['表婶'], 'f,m,xb,s&o':['表伯'], 'f,m,xb,s&l':['表叔'], 'f,m,xb,s,w':['表婶'], 'f,f,xb,s&o':['堂伯'], 'f,f,xb,s&l':['堂叔'], 'f,f,xb,s,w':['堂婶'], 'f,f,xs,d':['表姑'], 'f,m,xs,d':['表姑'], 'f,m,xb,d':['表姑'], 'f,f,xb,d':['堂姑'], //岳家 'w,m':['岳母','丈母娘'], 'w,f':['岳父','老丈人','丈人'], 'w,ob':['大舅哥','大舅子','内兄'], 'w,ob,w':['嫂子','大妗子'], 'w,lb':['小舅子','内弟'], 'w,lb,w':['弟媳妇','小妗子'], 'w,xb,s':['内侄','妻侄'], 'w,xb,d':['内侄女','妻侄女'], 'w,os':['大姨子','大姨姐','妻姐'], 'w,os,h':['大姨夫'], 'w,ls':['小姨子','小姨姐','妻妹','小妹儿'], 'w,ls,h':['小姨夫'], 'w,xs,s':['妻外甥'], 'w,xs,d':['妻外甥女'], //婆家 'h,m':['婆婆'], 'h,f':['公公'], 'h,ob':['大伯子'], 'h,ob,w':['大婶子','大伯娘','大嫂'], 'h,lb':['小叔子'], 'h,lb,w':['小婶子'], 'h,xb,s':['侄子'], 'h,xb,s,w':['侄媳妇'], 'h,xb,s,s':['侄孙子'], 'h,xb,s,d':['侄孙女'], 'h,xb,d':['侄女'], 'h,xb,d,h':['侄女婿'], 'h,xb,d,s':['外侄孙'], 'h,xb,d,d':['外侄孙女'], 'h,os':['大姑子','大姑'], 'h,os,h':['大姑夫','姊丈'], 'h,ls':['小姑子','小姑'], 'h,ls,h':['小姑夫'], 'h,xs,s':['姨甥'], 'h,xs,d':['姨甥女'], //内家 'f,f,f,f':['高祖父'], 'f,f,f,m':['高祖母'], 'f,f,f':['曾祖父'], 'f,f,m':['曾祖母'], 'f,m':['奶奶','祖母'], 'f,f':['爷爷','祖父'], 'f,f,f':['太爷爷'], 'f,f,m':['太奶奶'], 'f,f,xb':['xx爷爷'], 'f,f,xb,w':['xx奶奶'], 'f,f,ob':['大爷爷','大爷'], 'f,f,ob,w':['大奶奶'], 'f,f,lb':['小爷爷'], 'f,f,lb,w':['小奶奶'], 'f,f,xs':['姑奶奶'], 'f,f,xs,h':['姑爷爷'], 'f,m,f':['太爷爷'], 'f,m,m':['太奶奶'], 'f,m,xs':['姨爷爷','姨爷'], 'f,m,xs,h':['姨奶奶'], 'f,m,xb':['舅爷爷','舅爷'], 'f,m,xb,w':['舅奶奶'], //自家 'm':['妈妈','母亲','老妈','老母','娘','娘亲','妈咪'], 'f':['爸爸','父亲','老爸','老豆','爹','爹地','老爷子'], 'w':['老婆','妻子','太太','媳妇','女人','婆娘','妻','爱人'], 'h':['老公','丈夫','先生','男人','夫','爱人'], 's':['儿子'], 's,w':['儿媳妇'], 's,s':['孙子'], 's,s,w':['孙媳妇'], 's,s,s':['曾孙'], 's,s,s,w':['曾孙媳妇'], 's,s,s,s':['玄孙'], 's,s,d':['曾孙女'], 's,d':['孙女'], 's,d,h':['孙女婿'], 'd':['女儿','千金'], 'd,h':['女婿'], 'd,s':['外孙'], 'd,s,w':['外孙媳'], 'd,d':['外孙女'], 'd,d,h':['外孙女婿'], //旁支 'xb':['兄弟'], 'xs':['姐妹'], 'ob':['哥哥','兄'], 'ob,w':['嫂子','嫂'], 'lb':['弟弟','第'], 'lb,w':['弟妹'], 'xb,s':['侄子'], 'xb,s,w':['侄媳妇'], 'xb,s,s':['侄孙子'], 'xb,s,d':['侄孙女'], 'xb,d':['侄女'], 'xb,d,h':['侄女婿'], 'xb,d,s':['外侄孙子'], 'xb,d,d':['外侄孙女'], 'os':['姐姐','姐'], 'os,h':['姐夫'], 'ls':['妹妹','妹'], 'ls,h':['妹夫'], 'xs,s':['外甥'], 'xs,d':['外甥女'], //其他 's,w,m':['亲家母'], 's,w,f':['亲家公'], 'd,h,m':['亲家母'], 'd,h,f':['亲家公'], }; //数组去重 var unique = function(arr) { var result = [], hash = {}; for (var i = 0, elem; (elem = arr[i]) != null; i++) { if (!hash[elem]) { result.push(elem); hash[elem] = true; } } return result; }; var _attr = ''; //分词解析 function getSelectors(str){ var lists = str.split('的'); var result = []; //所有可能性 while(lists.length){ var name = lists.shift(); //当前匹配词 var arr = []; //当前匹配词可能性 for(var i in _data){ var value = _data[i]; if(value.indexOf(name)>-1){ //是否存在该关系 arr.push(i); } } if(result.length){ //当前匹配词与之前可能性组合 var res = []; for(var i=0;i-1){ var arr = selector.split('#'); for(var i=0;i