From 3ba32fc7b57d6f5aa9dacb0a013d21330e68e059 Mon Sep 17 00:00:00 2001 From: mumuy Date: Fri, 29 Apr 2016 14:09:45 +0800 Subject: [PATCH] =?UTF-8?q?updated=20=E4=BF=AE=E5=A4=8D=E5=85=84=E5=BC=9F?= =?UTF-8?q?=E5=A7=90=E5=A6=B9=E5=A4=9A=E7=BA=A7=E5=8C=B9=E9=85=8D=E6=B7=B7?= =?UTF-8?q?=E4=B9=B1=E7=9A=84=E9=94=99=E8=AF=AF=EF=BC=8C=E7=B2=BE=E7=AE=80?= =?UTF-8?q?=E7=AE=97=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 妈妈的爸爸的姐姐的妹妹的哥哥的妹妹的姐姐 会出现错误解析 --- script/relationship.js | 63 ++++++++++++++++-------------------------- 1 file changed, 24 insertions(+), 39 deletions(-) diff --git a/script/relationship.js b/script/relationship.js index b1180f2..fc5b99b 100644 --- a/script/relationship.js +++ b/script/relationship.js @@ -7,19 +7,19 @@ var _filter = [ /* 表亲 */ {//表亲的关系 - exp:/^(.+)&o([^#].+)&o/g, + exp:/^(.+)&o([^#]+)&o/g, str:'$1$2&o' }, {//表亲的关系 - exp:/^(.+)&l([^#].+)&l/g, + exp:/^(.+)&l([^#]+)&l/g, str:'$1$2&l' }, {//表亲的关系 - exp:/^(.+)&o(.+)&l/g, + exp:/^(.+)&o([^#]+)&l/g, str:'$1$2' }, {//表亲的关系 - exp:/^(.+)&l(.+)&o/g, + exp:/^(.+)&l([^#]+)&o/g, str:'$1$2' }, /* 父母 */ @@ -45,24 +45,20 @@ str:',$1b' }, {//如果自己是男性,父母的儿子是自己或者兄弟 - con:/(,[fhs]|,[olx]b),[mf],s/, - exp:/^(.+)?,[mf],s(.+)?$/, - str:'$1$2#$1,xb$2' + exp:/^(.*)(,[fh]|[xol]b),[mf],s(.*)$/, + str:'$1$2,xb$3#$1$2$3' }, {//如果自己是女性,父母的女儿是自己或者姐妹 - con:/(,[mwd]|,[olx]s),[mf],d/, - exp:/^(.+)?,[mf],d(.+)?$/, - str:'$1$2#$1,xs$2' + exp:/^(.*)(,[mw]|[xol]s),[mf],d(.*)$/, + str:'$1$2,xs$3#$1$2$3' }, {//如果自己是女性,父母的儿子是自己兄弟 - con:/(,[mwd]|,[olx]s),[mf],s/, - exp:/,[mf],s/g, - str:',xb' + exp:/(,[mw]|[xol]s),[mf],s/, + str:'$1,xb' }, {//如果自己是男性,父母的女儿是自己姐妹 - con:/(,[fhs]|,[olx]b),[mf],d/, - exp:/,[mf],d/g, - str:',xs' + exp:/(,[fh]|[xol]b),[mf],d/, + str:'$1,xs' }, {//父母的儿子是自己或兄妹 exp:/^,[mf],s(.+)?$/, @@ -82,24 +78,20 @@ str:'$2' }, {//如果自己是男性,兄弟姐妹的兄弟就是自己的兄弟或自己 - con:/(,[fhs]|,[olx]b),[olx][sb],[olx]b/, - exp:/^(.+)?,[olx][sb],[olx]b(.+)?$/, - str:'$1,xb$2#$1$2' + exp:/^(.*)(,[fh])(,[olx][sb])+,[olx]b(.*)$/, + str:'$1$2,xb$4#$1$2$4' }, {//如果自己是女性,兄弟姐妹的姐妹就是自己的姐妹或自己 - 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/g, - str:',xb' + exp:/^(.*)(,[mw])(,[olx][sb])+,[olx]s(.*)$/, + str:'$1$2,xs$4#$1$2$4' }, {//如果自己是男性,兄弟姐妹的姐妹就是自己的姐妹 - con:/(,[fhs]|,[olx]b),[olx][sb],[olx]s/, - exp:/,[olx][sb],[olx]s/g, - str:',xs' + exp:/(,[fh])(,[olx][sb])+,[olx]s/g, + str:'$1,xs' + }, + {//如果自己是女性,兄弟姐妹的兄弟就是自己的兄弟 + exp:/(,[mw])(,[olx][sb])+,[olx]b/g, + str:'$1,xb' }, {//不知道性别,兄弟姐妹的兄弟是自己或兄弟 exp:/^,[olx][sb],[olx]b(.+)?$/, @@ -588,13 +580,7 @@ s = selector; for(var i in _filter){ var item = _filter[i]; - if(item['con']){ - if(selector.match(item['con'])){ - selector = selector.replace(item['exp'],item['str']); - } - }else{ - selector = selector.replace(item['exp'],item['str']); - } + selector = selector.replace(item['exp'],item['str']); if(selector.indexOf('#')>-1){ var arr = selector.split('#'); for(var i=0;i-1&&sex!=sex2){ @@ -719,7 +704,7 @@ window.relationship = relationship; })(window); -// console.log(relationship({text:'姐姐的妹妹的姐姐',sex:1})); +// console.log(relationship({text:'妈妈的爸爸的姐姐的妹妹的哥哥的妹妹的姐姐',sex:1})); //老公的老婆的儿子的爸爸的老婆的儿子的爸爸 //我的三舅的儿子的爸爸的妹妹的儿子的叔叔的哥哥 //老婆的外孙的姥姥