_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]])这个语句是什么意思

解决方案 »

  1.   


    这个先拆开看(_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判断成功如果没有则判断失败
      

  2.   

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

  3.   

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