Moment.js:检查字符串是否格式正确

Ara*_*oca 2 javascript date momentjs

我正在使用具有特定格式字符串的正则表达式检查时刻字符串是否正确:

const isCorrect = isCorrectFormat('12/06/2016 20:20:20:444')
Run Code Online (Sandbox Code Playgroud)

isCorrectFormat函数:

const isCorrectFormat = (dateString) => {
    const regex = /[0-3][0-9][/][0-9]{2}[/][0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]*/
    return regex.test(dateString)
}
Run Code Online (Sandbox Code Playgroud)

当然,在这种情况下的结果将是错误的,因为没有使用相同的格式.

我现在要解决的问题是,也将格式作为参数发送,但是我不想使用正则表达式,而是直接使用时刻格式表示.

const isCorrect = isCorrectFormat(
    '12/06/2016 20:20:20:444',
    'MM/DD/YYYY HH:mm:ss.SSS'
)
Run Code Online (Sandbox Code Playgroud)

但我不知道如何实现它......我在文档中发现了一下,我没有看到任何方法来测试它.任何的想法?

非常感谢!!

Vin*_*zoC 11

您可以使用时刻严格的解析isValid方法.

moment(String, String)文档中所述:

Moment的解析器非常宽容,这可能会导致意外/意外行为.

从版本2.3.0开始,您可以为最后一个参数指定一个布尔值,以使Moment使用严格的解析.严格的解析要求格式和输入完全匹配,包括分隔符.

这里有一个工作样本:

const isCorrectFormat = (dateString, format) => {
    return moment(dateString, format, true).isValid()
}

const isCorrect = isCorrectFormat(
    '12/06/2016 20:20:20:444',
    'MM/DD/YYYY HH:mm:ss.SSS'
)

console.log(isCorrect);
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
Run Code Online (Sandbox Code Playgroud)