<!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中显示的错误未捕获的TypeError:无法调用未定义的方法'test' 我该如何解决这个错误
答案 0 :(得分:0)
答案 1 :(得分: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})(,|\\.|$)");
答案 2 :(得分:0)