为什么以下模式检查返回true?
var pattern = /^[0-9]+(\.([0-9]{1,3})?)?$/;
var val = "10.";
var check = pattern.test(val); // returns true
为什么以下模式检查返回true?
因为val.toString()
是10
根据spec,test
的参数首先转换为字符串。
让模式为ToString(Get(R,“source”))。
此外,你在?
之后还有一个额外的([0-9]{1,3})?
,同时删除它并尝试
var pattern = /^[0-9]+(\.([0-9]{1,3}))?$/;
var val = "10.";
pattern.test(val); // returns false
演示
var pattern = /^[0-9]+(\.([0-9]{1,3}))?$/;
var val = "10.";
console.log(pattern.test(val));