自己测试时发现问题出在:
/^\d+$/ig.test(arguments[0]) 
上,但是后面都return true了!!!难道FireFox的正则有问题?

解决方案 »

  1.   

    百度搜索了一下,FireFox确实有这种问题,改成如下方法就ok了:
    <script language="javascript" type="text/javascript">
        window.onload = Init;
        function Init(){
            var str = "abc中国人ddd";
            alert(str.left(4));
            alert(str.left(4));
            alert(str.left(4));
            alert(str.left(4));
        }    String.prototype.left = function(){
            if(arguments[0] ){
              if( arguments[0] instanceof Number || (arguments[0] instanceof string && arguments[0].match(/^\d+$/ig) ) ) 
                return "abcd";
            }    }</script>
      

  2.   

    估计是用了g模式后,IE和FF的表现不同,不过也真的挺奇怪的。不用g模式,一切正常。
      

  3.   

    发现用instanceof 也不行,再改成
    typeof(num) == "number" || typeof(num) == "string"最后直接改成
    !isNaN(arguments[0]),简单又方便。
      

  4.   

    没有太大的问题啊
    你的规则式其实有点多余,改成
    var rg=/^\d+$/ ;
    或者
    var rg=/^\d+$/i ; 
    就够了。
       <script language="javascript" type="text/javascript">
            window.onload = Init;
            function Init(){
                var str = "abc中国人ddd";
                alert(str.left(4));
                alert(str.left(4));
                alert(str.left(4444));
                alert(str.left('4a4'));
                alert(str.left('a'));
                alert(str.left());
            } String.prototype.left = function(){
                var rg=/^\d+$/ ;
                var str1='';
                if(arguments[0]){
                    str1=arguments[0];
                    if (rg.test(str1)){
                        return "abcd";
                    }
                    else{
                        return false;
                    }
                }
                else{
                    return arguments[0];
                }
             }
        </script>你在firefox下最好安装firebug调试工具来看到底问题在哪里。不过真的好像firefox的javascript支持中对 //g这样的规则式处理有点问题。
      

  5.   

    http://www.cnblogs.com/huqingyu/archive/2007/07/03/720657.html
      

  6.   

    function a(val) 

      var re = /^\d+$/g;
      alert(re.lastIndex);
      return re.test(val); 

    alert(a(5)); 
    alert(a(6)); lz可以研究一下
    用ie的话是0   true   0   true 
    用ff的话是0   true   1   false