diff --git a/script/relationship.js b/script/relationship.js index 2521574..cb90774 100644 --- a/script/relationship.js +++ b/script/relationship.js @@ -1,64 +1,13 @@ (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:/^,[ds],m(.+)$/, - str:'$1#,w$1' - }, - {//不知道性别,子女的妈妈是自己或妻子 - exp:/^,[ds],m$/, - str:',#,w' - }, - {//不知道性别,子女的爸爸是自己或丈夫 - exp:/^,[ds],f(.+)$/, - str:'$1#,h$1' - }, - {//不知道性别,子女的爸爸是自己或丈夫 - exp:/^,[ds],f/g, - str:',#,h' - }, - {//夫妻的孩子就是自己的孩子 - exp:/(.+),[wh](,[ds])/g, - str:'$1,$2' - }, - {//夫妻的对方是自己 - 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:/^(.+)&o(.+)&o/g, + exp:/^(.+)&o([^#].+)&o/g, str:'$1$2&o', }, {//表亲的关系 - exp:/^(.+)&l(.+)&l/g, + exp:/^(.+)&l([^#].+)&l/g, str:'$1$2&l', }, {//表亲的关系 @@ -69,66 +18,20 @@ exp:/^(.+)&l(.+)&o/g, str:'$1$2', }, - {//孩子的姐妹是自己的女儿 - exp:/(,[ds]&o),o[sb]/g, - str:'$1', + /* 父母 */ + {//母亲的丈夫是自己的父亲 + exp:/m,h/g, + str:'f', }, - {//孩子的兄弟是自己的儿子 - exp:/(,[ds]&l),l[sb]/g, - str:'$1', + {//父亲的妻子是自己的母亲 + exp:/f,w/g, + str:'m', }, - {//孩子的姐妹是自己的女儿 - exp:/,[ds](&[ol])?,[olx]s/g, - str:',d', - }, - {//孩子的兄弟是自己的儿子 - exp:/,[ds](&[ol])?,[olx]b/g, - str:',s', - }, - {//哥哥姐姐的哥哥姐姐还是自己的哥哥姐姐 - 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]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', - }, - {//不知道性别,兄弟姐妹的兄弟是自己或兄弟///////// - exp:/^,[olx][sb],[olx]b(.+)$/, - str:',$1#,xb$1' - }, - {//不知道性别,兄弟姐妹的兄弟是自己或兄弟 - exp:/^,[olx][sb],[olx]b$/, - str:',#,xb' - }, - {//不知道性别,兄弟姐妹的姐妹是自己或姐妹 - exp:/^,[olx][sb],[olx]s(.+)$/, - str:',$1#,xs$1' - }, - {//不知道性别,兄弟姐妹的姐妹是自己或姐妹 - exp:/^,[olx][sb],[olx]s$/, - str:',#,xs' + {//兄弟的父母就是自己的父母 + exp:/,[xol][sb](,[mf])/g, + str:'$1' }, + /* 父母的子女 */ {//父母的女儿年龄判断是哥哥还是弟弟 exp:/,[mf],d&([ol])/, str:',$1s' @@ -158,28 +61,107 @@ str:',xs' }, {//父母的儿子是自己或兄妹 - exp:/^(.+),[mf],s$/, - str:'$1#$1,xb' - }, - {//父母的女儿是自己或者姐妹 - exp:/^(.+),[mf],d$/, - str:'$1#$1,xs' - }, - {//父母的儿子是自己或兄弟 - exp:/^,[mf],s(.+)$/, + exp:/^,[mf],s(.+)?$/, str:'$1#,xb$1' }, {//父母的女儿是自己或者姐妹 - exp:/^,[mf],d(.+)$/, + exp:/^,[mf],d(.+)?$/, str:'$1#,xs$1' }, - {//父母的儿子是自己或兄妹 - exp:/^,[mf],s$/, - str:',#,xb' + /* 兄弟姐妹 */ + {//哥哥姐姐的哥哥姐姐还是自己的哥哥姐姐(年龄判断) + exp:/,o[sb](,o[sb])/, + str:'$1', }, - {//父母的女儿是自己或者姐妹 - exp:/^,[mf],d$/, - str:',#,xs' + {//弟弟妹妹的弟弟妹妹还是自己的弟弟妹妹(年龄判断) + 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]|([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:/^,[ds],m(.+)?$/, + str:'$1#,w$1' + }, + {//不知道性别,子女的爸爸是自己或丈夫 + exp:/^,[ds],f(.+)?$/, + str:'$1#,h$1' }, ]; @@ -415,13 +397,10 @@ return result; }; - var _attr = ''; - //分词解析 function getSelectors(str){ var lists = str.split('的'); var result = []; //所有可能性 - // _attr = ''; //清除全局变量 while(lists.length){ var name = lists.shift(); //当前匹配词 var arr = []; //当前匹配词可能性 @@ -497,11 +476,11 @@ function relationship(str){ var selectors = getSelectors(str); - // console.log('selectors#',selectors); + console.log('selectors#',selectors); var result = []; //匹配结果 for(var i = 0;i