(function(window){ //简写 var _filter = [ /* 表亲 */ {//表亲的关系 exp:/^(.+)&o([^#].+)&o/g, str:'$1$2&o', }, {//表亲的关系 exp:/^(.+)&l([^#].+)&l/g, str:'$1$2&l', }, {//表亲的关系 exp:/^(.+)&o(.+)&l/g, str:'$1$2', }, {//表亲的关系 exp:/^(.+)&l(.+)&o/g, str:'$1$2', }, /* 父母 */ {//母亲的丈夫是自己的父亲 exp:/m,h/g, str:'f', }, {//父亲的妻子是自己的母亲 exp:/f,w/g, str:'m', }, {//兄弟的父母就是自己的父母 exp:/,[xol][sb](,[mf])/g, str:'$1' }, /* 父母的子女 */ {//父母的女儿年龄判断是哥哥还是弟弟 exp:/,[mf],d&([ol])/, str:',$1s' }, {//父母的女儿年龄判断是姐姐还是妹妹 exp:/,[mf],s&([ol])/, str:',$1b' }, {//如果自己是男性,父母的儿子是自己或者兄弟 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:'$1#,xb$1' }, {//父母的女儿是自己或者姐妹 exp:/^,[mf],d(.+)?$/, str:'$1#,xs$1' }, /* 兄弟姐妹 */ {//哥哥姐姐的哥哥姐姐还是自己的哥哥姐姐(年龄判断) exp:/,o[sb](,o[sb])/, str:'$1', }, {//弟弟妹妹的弟弟妹妹还是自己的弟弟妹妹(年龄判断) exp:/,l[sb](,l[sb])/, str:'$1', }, {//如果自己是男性,兄弟姐妹的兄弟就是自己的兄弟或自己 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]s/, exp:/^(.+)?,[olx][sb],[olx]s(.+)?$/, str:'$1,xs$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', }, {//不知道性别,兄弟姐妹的兄弟是自己或兄弟 exp:/^,[olx][sb],[olx]b(.+)?$/, str:',$1#,xb$1' }, {//不知道性别,兄弟姐妹的姐妹是自己或姐妹 exp:/^,[olx][sb],[olx]s(.+)?$/, str:',$1#,xs$1' }, /* 孩子 */ {//夫妻的孩子就是自己的孩子 exp:/,[wh](,[ds])/g, str:'$1' }, {//孩子的姐妹是自己的女儿(年龄判断) exp:/,[ds]&o,ob/g, str:',s&o', }, {//孩子的姐妹是自己的女儿(年龄判断) exp:/,[ds]&o,os/g, str:',d&o', }, {//孩子的兄弟是自己的儿子(年龄判断) exp:/,[ds]&l,lb/g, str:',s&l', }, {//孩子的兄弟是自己的儿子(年龄判断) exp:/,[ds]&l,ls/g, str:',d&l', }, {//孩子的姐妹是自己的女儿 exp:/,[ds](&[ol])?,[olx]s/g, str:',d', }, {//孩子的兄弟是自己的儿子 exp:/,[ds](&[ol])?,[olx]b/g, str:',s', }, /* 夫妻 */ {//夫妻的对方是自己 exp:/(,w,h)|(,h,w)/g, str:'' }, {//自己是女性,女儿或儿子的妈妈是自己 exp:/(,[mwd](&[ol])?|([olx]s)),[ds](&[ol])?,m/g, str:'$1' }, {//自己是女性,女儿或儿子的爸爸是自己的丈夫 exp:/(,[mwd](&[ol])?|([olx]s)),[ds](&[ol])?,f/g, str:'$1,h' }, {//自己是男性,女儿或儿子的爸爸是自己 exp:/(,[fhs](&[ol])?|([olx]b)),[ds](&[ol])?,f/g, str:'$1' }, {//自己是男性,女儿或儿子的妈妈是自己的妻子 exp:/(,[fhs](&[ol])?|([olx]b)),[ds](&[ol])?,m/g, str:'$1,w' }, {//不知道性别,子女的妈妈是自己或妻子 exp:/^,[ds],m(.+)?$/, str:'$1#,w$1' }, {//不知道性别,子女的爸爸是自己或丈夫 exp:/^,[ds],f(.+)?$/, str:'$1#,h$1' }, ]; 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,m,xs,d':['表姨'], 'm,m,xs,d,h':['表姨丈'], 'm,m,xb,d':['表姨'], 'm,m,xb,d,h':['表姨丈'], 'm,f,xs,d':['表姨'], 'm,f,xs,d,h':['表姨丈'], 'm,f,xb,d':['堂姨'], 'm,f,xb,d,h':['堂姨丈'], //舅家 '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,f,xs,d,h':['表姑丈'], 'f,m,xs,d':['表姑'], 'f,m,xs,d,h':['表姑丈'], 'f,m,xb,d':['表姑'], 'f,m,xb,d,h':['表姑丈'], 'f,f,xb,d':['堂姑'], 'f,f,xb,d,h':['堂姑丈'], //岳家 'w,m':['岳母','丈母娘'], 'w,f':['岳父','老丈人','丈人'], 'w,f,ob':['伯岳'], 'w,f,ob,w':['伯岳母'], 'w,f,lb':['叔岳'], 'w,f,lb,w':['叔岳母'], 'w,f,f':['太岳父'], 'w,f,m':['太岳母'], 'w,f,f,ob':['太伯岳'], 'w,f,f,ob,w':['太伯岳母'], 'w,f,f,lb,':['太叔岳'], 'w,f,f,lb,w':['太叔岳母'], '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,f,xb,s&o':['堂兄'], 'h,f,xb,s&o,w':['堂嫂'], 'h,f,xb,s&l':['堂弟'], 'h,f,xb,s&l,w':['堂小弟'], 'h,ob':['大伯子'], 'h,ob,w':['大婶子','大伯娘','大嫂'], 'h,lb':['小叔子'], 'h,lb,w':['小婶子'], 'h,xb,s':['侄子'], 'h,xb,s,w':['侄媳','侄媳妇'], 'h,xb,s,s':['侄孙','侄孙子'], 'h,xb,s,s,w':['侄孙媳'], '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':['姨甥女'], 'h,m,xb':['舅公'], 'h,m,xb,w':['舅婆'], 'h,m,xs':['姨婆'], 'h,m,xs,h':['姨公'], //旁支 'ob':['哥哥','哥','兄','大哥','大佬'], 'ob,w':['嫂子','嫂'], 'lb':['弟弟','弟'], 'lb,w':['弟妹'], 'xb,s':['侄子'], 'xb,s,w':['侄媳','侄媳妇'], 'xb,s,s':['侄孙','侄孙子'], 'xb,s,s,w':['侄孙媳'], 'xb,s,d':['侄孙女'], 'xb,d':['侄女'], 'xb,d,h':['侄女婿'], 'xb,d,s':['外侄孙子'], 'xb,d,d':['外侄孙女'], 'os':['姐姐','姐'], 'os,h':['姐夫'], 'ls':['妹妹','妹'], 'ls,h':['妹夫'], 'xs,s':['外甥'], 'xs,s,w':['外甥媳妇'], 'xs,s,s':['甥孙'], 'xs,s,d':['甥孙女'], 'xs,d':['外甥女','甥女'], 'xs,d,h':['外甥女婿'], 'xs,d,s':['甥外孙'], 'xs,d,s,w':['甥外孙媳妇'], 'xs,d,d':['甥外孙女'], 'xs,d,d,h':['甥外孙女婿'], //内家 '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':['孙女婿'], 's,d,s':['曾外孙'], 's,d,d':['曾外孙女'], 'd':['女儿','千金'], 'd,h':['女婿'], 'd,s':['外孙'], 'd,s,w':['外孙媳'], 'd,s,s':['外曾孙','重外孙'], 'd,s,d':['外曾孙女','重外孙女'], 'd,d':['外孙女'], 'd,d,h':['外孙女婿'], 'd,d,s':['外曾外孙'], 'd,d,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; }; //分词解析 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