如何检查以数字结尾的字符串是不是日期
How to check that a string ending with a number is NOT a date?
当我想检查字符串是否是Javascript中的日期时,我通常这样做:
!isNaN(Date.parse(myString));
但是我刚刚发现
isNaN(Date.parse("smth")) === true
isNaN(Date.parse("smth_1")) === true
isNaN(Date.parse("1 smth")) === true
isNaN(Date.parse("smth 1")) === false // !!
看这提琴
所以我的问题是:为什么任何以数字结尾的字符串(前面有空格)解析为有效日期(显然不是),以及如何可靠地检查它不是?
已知Chrome问题:
规范实际上说日期解析是依赖于实现的,当面对未知格式时,实现可能会做出最好的猜测。这就是V8的作用。我们可以更严格一些,拒绝更多的字符串,但是它的优先级很低。
https://code.google.com/p/chromium/issues/detail?id=124398https://code.google.com/p/chromium/issues/detail?id=126448
也日期问题。解析Chrome
根据Mozilla开发者网络:
ECMAScript规范规定:如果String不符合标准格式,则函数可能会退回到任何特定于实现的启发式方法或特定于实现的解析算法。无法识别的字符串或包含ISO格式字符串中非法元素值的日期将导致Date.parse()返回NaN。
所以这是一个实现特定解析的情况
相关文章:
- 创建属性值数组,其中属性名称以特定字符串结尾
- 如何删除字符串开头和结尾的换行符
- 用于删除字符串中字符开头到结尾的正则表达式
- 从结尾或开头修剪字符串
- 正则表达式能否匹配字符串开头或结尾的字符(但不能同时匹配)
- 将一个字母结尾到特定字符串的末尾
- 如何从以某个单词(regexp)结尾的字符串中获取id
- javascript正则表达式浮点数,以字符串结尾
- 在字符串的开头和结尾搜索相同的数字
- 如何编写RegExpression For在javascript中不允许在字符串中使用前导和结尾空格
- 正则表达式 - 字符串不能以空格开头,以空格结尾,并且连续包含几个空格
- 在字符串的开头和结尾添加一个字符
- JavaScript WebSocket 非以 null 结尾的字符串
- 将特定字符串的结尾从模式的末端剥离
- 如何检查字符串是否有空格或结尾
- 从字符串(JavaScript 或 PHP)的开头和结尾删除
- 标签
- REGEX 检查字符串开头或结尾的字符
- 如何删除“//<![CDATA[' 和结尾 '//]]>' 与字符串中的 JavaScript
- jquery 正则表达式修剪 URL 字符串的开头和结尾
- Web 视图中字符串开头和结尾的像素偏移量 (x,y)