From 2be1878cbd7c07c18694d4605fa76a48f79dacd1 Mon Sep 17 00:00:00 2001 From: mumuy Date: Wed, 16 Mar 2016 22:12:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=84=E5=BC=9F=E5=A7=90=E5=A6=B9=E9=97=B4?= =?UTF-8?q?=E7=9F=AD=E5=85=B3=E7=B3=BB=E9=97=AE=E9=A2=98=E7=9A=84=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/relationship.js | 38 ++++++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/script/relationship.js b/script/relationship.js index eb10c77..6838cf4 100644 --- a/script/relationship.js +++ b/script/relationship.js @@ -82,7 +82,22 @@ 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' + }, {//如果自己是男性,父母的儿子是自己或者兄弟 con:/(,[fhs]|([olx]b)),[mf],s/, exp:/^(.+)?,[mf],s(.+)$/, @@ -361,6 +376,7 @@ function getSelectors(str){ var lists = str.split('的'); var result = []; //所有可能性 + _attr = ''; //清除全局变量 while(lists.length){ var name = lists.shift(); //当前匹配词 var arr = []; //当前匹配词可能性 @@ -394,9 +410,9 @@ result[i]=result[i].replace(filter,''); } }else if(o&&!l){ - _attr = '&o'; + _attr = 'o'; }else if(!o&&l){ - _attr = '&l'; + _attr = 'l'; } } return result; @@ -427,10 +443,17 @@ } }else{ selector = selector.substr(1); //去前面逗号 - if(selector.match(/,[ds]$/)&&_attr){ - selector += _attr; + if(_attr&&!selector){ //如果存在属性,不可能为自己 + }else{ + if(_attr){ + if(selector.match(/,[ds]$/)){ + selector += '&'+_attr; + }else if(selector.match(/^x[sb]$/)){ //兄弟姐妹加属性 + selector = selector.replace(/x/,_attr); + } + } + result.push(selector); } - result.push(selector); } } getId(selector); @@ -462,7 +485,6 @@ result.push(_data[id][0]); }else{ //高级查找 var data = getDataById(id); //忽略属性查找 - console.log(data); if(!data.length){ //当无精确数据时,忽略年龄条件查找 id = id.replace(/&[ol]/g,''); data = getDataById(id); @@ -489,4 +511,4 @@ window.relationship = relationship; })(window); -console.log(relationship('儿子的外公')); \ No newline at end of file +console.log(relationship('弟弟的弟弟')); \ No newline at end of file