2017-07-26 129 views
0

我被检查如果一时字符串中使用正则表达式具有特定格式字符串是正确的:Moment.js:检查字符串格式正确

const isCorrect = isCorrectFormat('12/06/2016 20:20:20:444') 

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) 
} 

当然,在这种情况下的结果将是因为不使用相同的格式。

现在我想解决的问题是发送格式也作为参数,而不是使用正则表达式,我想直接使用moment格式speficifation。

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

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

非常感谢你!

+1

瞬间会尝试解析无论你通过。如果您知道该格式,请使用https://momentjs.com/docs/#/parsing/string-format/ –

+0

时刻(“不是真正的日期”)。isValid(); // false –

回答

4

您可以使用时刻strict parsingisValid方法。

正如moment(String, String)文档指出:

片刻的解析器是非常宽容的,而这可能导致意想不到/意外行为。

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

Herea工作样本:

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);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

+0

你打我吧 –

+0

这很酷,只是我一直在寻找。非常感谢! –