有字母时parseInt不返回NaN

时间:2019-04-25 20:10:14

标签: javascript

C_ID    O_ID    C_O_ID  PoP Max_PoP_End Status  Type    Completion_Date
WAB 0034    WAB-0034    09/25/2018 - 05/30/2019 03/30/2019  Started Final   03/30/2019
WDN PO43    WDN-PO43    09/15/2017 - 10/18/2018 10/18/2018  Pending Interim 01/18/2020
POD     POD 08/10/2015 - 04/26/2016 01/18/2019  Pending Final   01/18/2019
DZE SE95    DZESE95 10/01/2017 - 09/30/2018 07/15/2018  Completed   Final   07/15/2018
SDF PE34    SDF-PE34    06/01/2016 - 11/30/2016 05/30/2016  Completed   Final   05/30/2016

由于parseInt,我的逻辑失败了。我假设当输入包含字母时,parseInt始终返回NaN?

2 个答案:

答案 0 :(得分:3)

否,parseInt()允许在某些数字字符之后使用“垃圾”(非数字)字符。 parseFloat()函数具有相同的“功能”。

如果要获取数字,可以使用Number("123")或仅使用+一元运算符。但是,这些代码可以接受任何JavaScript数字,包括带有小数部分或科学计数形式的数字的JavaScript数字。但是,如果字符串输入不是有效的数字常量,则这些方法将失败并给出NaN

您可以做类似的事情

if (+someString === Math.floor(+someString))

我猜。

edit -注释指出,您还希望检查空字符串或全空格字符串的简写形式。另一种选择是使用简单的正则表达式(/^\d+$/,然后进行健全性检查,以确保其长度不超过200位(一个月可能还有其他数字)。

答案 1 :(得分:0)

如果您想检查NaN,另一种方法是使用isNaN()对其进行测试。 isNaN()将返回一个布尔值,为您提供给定输入的验证。

parseInt('5aab4') //5

isNaN('5aab4') // true