Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式未返回true,但应返回(独立测试)_Javascript_Regex - Fatal编程技术网

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)
(这确实是无效的)。正则表达式是相同的。