网络编程
位置:首页>> 网络编程>> JavaScript>> Firefox下正则诡异问题

Firefox下正则诡异问题

作者:潇洒 来源:潇洒blog 发布时间:2009-08-03 14:03:00 

标签:Firefox,兼容性,正则

第二次遇到FF下正则兼容性问题( 第一次是关于"g"全局标志的,现在网上已有很多相关文章介绍)。

以下正则在FF和IE下的结果不一样,很是奇怪,目前还没找到原因和解决方案。希望有高手指点一下。谢谢!

    <script type="text/javascript" >

      var re = /^(?:([a-z])|([A-Z])|([0-9])){5,}|(.)+$/;
      alert('abcdeFGHIJ12345'.replace(re, '$1$2$3'));
      alert('ab1F'.replace(re, '$1$2$3'));

      /*
        完整的需求是这样:所有小写,大写,数字。5个以上都替换为1个。5个以下清空。
        
        现在的结果是: 在IE下是正确的: eJ5 ,  在FF下是: 5
        
        期望的结果是: 1、在FF下得到同样的结果  2、弄明白为什么会这样
       */
    </script>



经过一番偿试,总算(试)出FF和IE都兼容的方案来了~ 可惜暂时还无法解释为什么。
(而且也不知道这个方案是否存在bug- -,高手们,快来看看咯~)

发现bug.....跟上面的正则还是不完全一样。当string里的同类字符小于5个时就不对了。- -!
继续求高手帮忙~

    <script type="text/javascript" >
      // 在ie和ff下结果一样了
      var re = /(?:([a-z]){5,}|([A-Z]){5,}|([0-9]){5,})|(.)/g;
      alert('abcdeFGHIJ12345'.replace(re, '$1$2$3'));
      alert('ab1F'.replace(re, '$1$2$3'));
      // 同类字符小于5个时又不对了
      alert('abcFG12'.replace(re, '$1$2$3'));
    </script>

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com