有没有办法验证使用Moment JS传递的String是否有效?
操作moment("2014-12-13 asdasd","YYYY-MM-DD LT").isValid()或moment("asdasd","LT").isValid()等同于true理想情况下不应发生的操作.
我的应用程序使用多种语言,我真的不可能想出一个RegEx模式来验证字符串.例如,如果我得到时间字符串"??12?12?0?",Moment JS应该能够验证这一点.我检查了源代码,发现时间检查在库中并不严格.我可能错过了什么.请帮忙.
Mat*_*int 29
如文档中所述,从2.3.0开始,您可以传递第三个参数true,该参数将打开"严格解析"模式.
moment("2014-12-13 asdasd","YYYY-MM-DD LT", true).isValid() // false
moment("2014-12-13 12:34 PM","YYYY-MM-DD LT", true).isValid() // true
Run Code Online (Sandbox Code Playgroud)
缺点是它必须完全匹配语言环境的格式.由于LT相当于h:mm A英语,它只接受12小时没有秒.如果你通过24小时或超过秒,那么它将失败.
moment("2014-12-13 12:34:00 PM","YYYY-MM-DD LT", true).isValid() // false
moment("2014-12-13 15:00","YYYY-MM-DD LT", true).isValid() // false
Run Code Online (Sandbox Code Playgroud)
更好的解决方案可能是通过严格的解析传递多种格式:
var formats = ["YYYY-MM-DD LT","YYYY-MM-DD h:mm:ss A","YYYY-MM-DD HH:mm:ss","YYYY-MM-DD HH:mm"];
moment("2014-12-13 12:34 PM", formats, true).isValid() // true
moment("2014-12-13 15:00", formats, true).isValid() // true
moment("2014-12-13 12:34:00 PM", formats, true).isValid() // true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14980 次 |
| 最近记录: |