2017-07-26 128 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

這很酷,只是我一直在尋找。非常感謝! –