Javascript 正则表达式未返回true,但应返回(独立测试)
我有一个功能:Javascript 正则表达式未返回true,但应返回(独立测试),javascript,regex,Javascript,Regex,我有一个功能: function isZipCodeValid (zipcode) { var pattern = /^\d{5}(?:[-]\d{4}){0,1}$/; console.log(pattern.test(zipcode)); return pattern.test(zipcode); } 我也试过这样做: function isZipCodeValid (zipcode) { var pattern = /^\d{5}(?:[-]\d{4})?$/;
function isZipCodeValid (zipcode) {
var pattern = /^\d{5}(?:[-]\d{4}){0,1}$/;
console.log(pattern.test(zipcode));
return pattern.test(zipcode);
}
我也试过这样做:
function isZipCodeValid (zipcode) {
var pattern = /^\d{5}(?:[-]\d{4})?$/;
console.log(pattern.test(zipcode));
return pattern.test(zipcode);
}
似乎没有什么不同
当我传入邮政编码12345时,它返回true。当我传入12345-6789
时,它返回false,但在的独立验证表明我的正则表达式应该与模式匹配
我做错了什么?这是因为JS正在5556上运行测试。也就是12345减去6789。本质上,它运行一个数学运算,得到一个4位数字,并测试它(显然返回false)。一种修复方法是将邮政编码用引号括起来
var pattern = /^\d{5}(?:[-]\d{4}){0,1}$/;
var zipcode = '12345-7865';
console.log(pattern.test(zipcode));
查看它的工作情况当我测试时,它返回真值。将其粘贴到控制台中,例如:
/^\d{5}(?:[-]\d{4}){0,1}$/.test(“12345-6789”)
。你到底是如何测试的?请使用snippet功能构建一个完整的代码段。已确认--工作正常。你的环境有什么问题吗?只是猜测一下:你不是在做没有引号的isZipCodeValid(12345-6789)
吧?这是一个减法运算,相当于isZipCodeValid(5556)
(这确实是无效的)。正则表达式是相同的。