var str= "45hhe6aaayh we5t346hern6453aaadf heaaasgs sry3";
str = str.replace(/(.*?)(aaadf|aaayh|aaasgs)(.*?)/ig,"$1替换内容$3");

解决方案 »

  1.   

    to jonescheng(C#前进无极限)
      *\?\+只是匹配前面的一个子集,我的意思是怎么匹配多个/aaa.[^ ]/用/aaa.[^ ]*/这个是无效的
      

  2.   

    to  lienzhu(李强)我给出的这个字符串只是一个例子,假如这个字符串有很长,那么你的这种方法肯定不行的,因为事先也不知道这个字符串有多长,符合匹配的有多少个
      

  3.   

    var str= "45hhe6aaayh we5t346hern6453aaadf heaaasgs sry3";
    var a = str.replace(/(.*?)([aaa])(.*?)([\s])(.*?)/ig,"$1替换内容$4$5");
      

  4.   

    var str= "45hhe6aaayh we5t346hern6453aaadf heaaasgs sry3";
    var a = str.replace(/aaa.[^\s]*/ig,"替换内容");
      

  5.   

    如果需要区分大小下
    var a = str.replace(/aaa.[^\s]*/g,"替换内容");
      

  6.   

    <script type="text/javascript">
    var temp="45hhe6aaayh we5t346hern6453aaadf heaaasgs sry3";
    var reg = new RegExp(/aaa.[^\s]*/ig);
    var arr=reg.exec(temp);
    document.write(arr.length);
    </script>
    这样还是只能匹配一个结果,即aaayh,后面的两个匹配不到
      

  7.   

    <script type="text/javascript">
    var temp="45hhe6aaayh we5t346hern6453aaadf heaaasgs sry3";
    var arr = temp.match(/aaa.[^\s]*/ig);
    document.write(arr.length);
    </script>
      

  8.   

    无论是否有g,exec每次只能返回一个匹配值
    <script type="text/javascript">
    var temp="45hhe6aaayh we5t346hern6453aaadf heaaasgs sry3";
    var reg = new RegExp(/aaa.[^\s]*/ig);
    while((arr=reg.exec(temp))!=null){alert(arr);
    }
    </script>