+ -
当前位置:首页 → 问答吧 → 关于对象和正则表达式匹配的

关于对象和正则表达式匹配的

时间:2011-10-21

来源:互联网

_white_list = { 'douban.com': 1, 'douban.fm': 1, 'google.com': 1, 'google-analytics.com': 1, 'googleadservices.com': 1 }, 
_RE_DOMAIN = /(.+?)\.([^\/]+).+/; 
if (_white_list[(_RE_DOMAIN.exec(s) || [])[2]])这个语句是什么意思

作者: ZINI1900   发布时间: 2011-10-21

这个和正则没有关系。
你把那句话,分开写,再看看什么意思?

作者: soonfei   发布时间: 2011-10-21

多贴一段代码看看……

作者: lijpwsw   发布时间: 2011-10-21

引用楼主 zini1900 的回复:
_white_list = { 'douban.com': 1, 'douban.fm': 1, 'google.com': 1, 'google-analytics.com': 1, 'googleadservices.com': 1 },
_RE_DOMAIN = /(.+?)\.([^\/]+).+/;
if (_white_list[(_RE_DOMAIN.exec(s) || [……


这个先拆开看(_RE_DOMAIN.exec(s) || [])[2]

_RE_DOMAIN.exec(s)这个是利用/(.+?)\.([^\/]+).+/去匹配变量 s 中的值

如果匹配成功则(_RE_DOMAIN.exec(s) || [])[2] 得到 匹配成功的值的第二个索引中的值
如果匹配失败 则取 [] 中的第二个值 ( 实际上是取不到的)


if (_white_list[(_RE_DOMAIN.exec(s) || [])[2]]) 的意思就是匹配变量 s 中 是否含有_white_list的key值 也就是看变量s中是否有douban.com或者douban.fm。。。如果有则if判断成功如果没有则判断失败

作者: lijpwsw   发布时间: 2011-10-21

不是很理解这个正则干嘛用,楼主可否把s字符串的值列个出来
现在的正则匹配:
(_RE_DOMAIN.exec(s) || [])[2]
“www.douban.com” ===> douban.co
  "www.abcd.douban.fm" ===> abcd.douban.f
我想这种结果楼主也不想得到

作者: sharkdbj   发布时间: 2011-10-21

/(.+?)\.([^\/]+).+/我想问一下这个正则表达式是怎么匹配得到douban.com这样的域名的

作者: ZINI1900   发布时间: 2011-10-21