本帖最后由 alavs 于 2010-03-26 21:19:34 编辑

解决方案 »

  1.   

    第一句红色代码:
    匹配用户输入的以@开头后接任意字符+非空格其他任何字符+空格
    如:如果用户输入hy@1,则会匹配@1+非空格其他字符+空格,所以匹配结果为一个数组
    [0] = "@163.com ",[1]="@126.com ", [2]="@129.com "
    第二句红色代码:
    matchs.join(''),是把数组连接成一个字符串
    .replace(/ $/,''),去掉字符串末尾的空格
    .split(' '),通过空格把字符串分割成数组
      

  2.   

    非常感谢,我是个JS初学者,看来真正长我正则表达式还需要努力!非常感谢chenbin520的细心解答
      

  3.   

    var matchs = mailBoxs.match(new RegExp(keyword+"[^ ]* ","gm"));
    让字符串匹配——字符keyword + 0个或者多个非空字符 + 1个空字符,采用全文多行查找方式。
    如果用户输入[email protected],通过keyword.match(/@\w*[\.]?\w*/)变成了@sina.com,就(只)会匹配mailBoxs中的'@sina.com ' 、'@sina.cn '、'@vip.sina.com '(注意每个后面都有空格),并把它们存放进数组matchs。
      

  4.   

    不对。
    '[email protected]'==> '@sina.com ' !=> '@sina.cn ' or '@vip.sina.com '.
    '[email protected]'==>'@yahoo.com.cn ' !=>'@yahoo.cn '.
    感觉这样做是为了防止sina、yahoo、qq等关键字写错。