0
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>a demo page</title>
</head>

<body>
<script>
var formatNum=function(num)
   {
        if(!/^(\+|-)?\d+(\.\d+)?$/.test(num)){
            return num;
        }
    var re = new RegExp().compile("(\\d)(\\d{3})(,|\\.|$)");
    num += "";
    while(re.test(num))
        num = num.replace(re, "$1,$2$3")
    return num;
}
alert(formatNum(1000000));
</script>
</body>
</html>

我使用这些代码将数字格式化为1,000,000 它在 Firefox 中运行良好,但在 chrome 中无法运行

这是 chrome Uncaught TypeError 中显示的错误:无法调用未定义的方法“测试” 我该如何解决此错误

4

3 回答 3

0

它已被弃用,也不能在 Firefox 中工作。也许您的版本是旧版本。

已弃用和过时的功能

使用@Raoul的建议。

于 2013-08-16T06:47:48.070 回答
0

试试这个

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>a demo page</title>
</head>

<body>
<script>
var formatNum=function(num)
   {
        if(!/^(\+|-)?\d+(\.\d+)?$/.test(num)){
            return num;
        }
    var re = new RegExp();
    re.compile("(\\d)(\\d{3})(,|\\.|$)");
    num += "";
    while(re.test(num))
        num = num.replace(re, "$1,$2$3")
    return num;
}
alert(formatNum(1000000));
</script>
</body>
</html>

原因是 chrome 在调用 compile() 时没有返回对已编译 RegExp 对象的引用。

所以这条线 var re = new RegExp().compile("(\\d)(\\d{3})(,|\\.|$)");将不起作用,而是需要遵循一个不太灵活的版本。

 var re = new RegExp();
 re.compile("(\\d)(\\d{3})(,|\\.|$)");
于 2013-08-16T06:47:00.710 回答
0

RegExp() . compile()方法已弃用。

你为什么不像这样使用你的正则表达式 - :

var regexp = new RegExp("(\\d)(\\d{3})(,|\\.|$)");
于 2013-08-16T06:43:22.020 回答