Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.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 伊斯南没有收到信吗_Javascript_String_Numbers_Nan - Fatal编程技术网

Javascript 伊斯南没有收到信吗

Javascript 伊斯南没有收到信吗,javascript,string,numbers,nan,Javascript,String,Numbers,Nan,我有JS代码来验证邮政编码:10个数字字符,在第6位有一个破折号(例如12345-6789)。我使用验证这两个部分都是数字!伊斯南 if (valSize == 10) { var numVal1 = new Number(newVal.substring(0, 4)); var numVal2 = new Number(newVal.substring(6, 9)); if (newVal.charAt(5) == '-' && !isNaN(numVa

我有JS代码来验证邮政编码:10个数字字符,在第6位有一个破折号(例如12345-6789)。我使用
验证这两个部分都是数字!伊斯南

if (valSize == 10) {
    var numVal1 = new Number(newVal.substring(0, 4));
    var numVal2 = new Number(newVal.substring(6, 9));
    if (newVal.charAt(5) == '-' && !isNaN(numVal1) && !isNaN(numVal2)) {
        return newVal;
    }
}
throw "Incorrect format";
这主要起作用,但由于某种原因,以下值会通过,并且不会返回错误:

12345-678a
为什么呢!在这种情况下允许IsNaN(子字符串(6,9))通过?

newVal。在字符串“12345-678a”的情况下,子字符串(6,9)
将返回一个数字“678”。因此应该不会抛出错误。

函数签名是:

str.substring(indexA[, indexB])
indexA

介于0和字符串长度之间的整数,指定 偏移到要包含在字符串中的第一个字符的字符串中 返回子字符串

indexB

可选。介于0和字符串长度之间的整数 指定第一个字符到字符串的偏移量,而不是到 包含在返回的子字符串中

所以你有:

"12345-678a".substring(0,4) // 1234
"12345-678a".substring(6,9) // 678
因此,要么修正指数:

"12345-678a".substring(0,5) // 12345
"12345-678a".substring(6)   // 678a
或使用


或者使用正则表达式(推荐),因为在修复后,您当前的代码将乐于接受
12.45-67.8
+1234--678
12e45-6e-9
。您需要做的就是:

/^\d{5}-\d{4}$/.test("12345-678a") // false
/^\d{5}-\d{4}$/.test("12.45-67.8") // false
/^\d{5}-\d{4}$/.test("12345-6789") // true

正则表达式不是更合适的测试吗

/\d{5}-\d{4}/.test('12345-1234')
true

/\d{5}-\d{4}/.test('12345-123a')
false

值得注意的是,
“12345-678a”。substr(6,9)//678a
旁注:有些人说异常应该用于异常的事情,而输入验证并不完全是异常的。