JavaScript析構+正則的字串解析方法

banq發表於2022-03-22

假設日期字串:09/09/2022. 也許您有一個函式接收此日期作為字串,並且您想將月、日和年分配給單獨的變數。
通常處理方式:

parseDateString(date: string) {
    let day = date.substr(0, 2);
    let month = date.substr(3, 2);
    let year = date.substr(6, 4);
    ...
}


利用析構或解構的力量,再加上regex的多功能性,我們可以做以下事情:

parseDateString(date: string) {
    const [,day,,month,,year] = date.match(
        /([0-9]{1,2})(\/)([0-9]{1,2})(\/)([0-9]{2,4})/
    );
    ...
}



我們有一個正規表示式,在不深入研究regex話題的情況下,與match()函式一起使用,將模式與給定的日期變數匹配。模式本身用圓括號分成五個捕獲組,所以match()函式將在一個陣列中分別返回這些部分。
在等式的左邊,我們正在使用解構法將三個變數分配給從match()函式中收到的值。還請注意,我們透過在逗號之間使用空值來跳過返回陣列的某些索引。從 match() 返回的第一個元素是匹配的字串本身,所以我們可以跳過這一部分。
我們還跳過了索引2和4,因為我們不關心斜線。這就使得日、月、年成為獨立的變數,對應於日期字串的各個部分。
由於我們使用的是正規表示式,所以表示式本身可以按照你的要求進行修改,使其更加健壯。你可以修改表示式,以檢查月名而不是數字,以及一週的天數,等等。
使用這種方法,你可以避免用一堆 "if "語句來檢查邊緣情況,只需讓你的正規表示式更努力地工作。

相關文章