繁体   English   中英

在Chrome中发生错误,但在Firefox中未发生

[英]Error occurred in Chrome but not Firefox

<!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:无法调用未定义的方法“ test”,我该如何解决该错误

RegExp()。compile()方法已过时。

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

var regexp = new RegExp("(\\d)(\\d{3})(,|\\.|$)");

试试这个

<!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})(,|\\.|$)");

已弃用,也无法在Firefox中使用。 也许您的版本是旧版本。

过时和过时的功能

使用@Raoul的建议。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM