我有一個簡單的日期輸出,如下所示:
May 16, 2022, 1:00 PM
我想要做的是用以下字串替換它:
May 16, 2022 at 1:00 PM
我找到了這個正則運算式:.replace(/,*$/, " at");
根據那個答案,我應該得到我想要的結果,但我收到以下內容:
May 20, 2022, 1:00 AM at
它只是附加at在字串的末尾。我可以就如何調整正則運算式獲得一些幫助嗎?JavaScript 不是我最擅長的語言,而正則運算式更是如此。
uj5u.com熱心網友回復:
您需要一種方法來匹配第二個逗號而不是第一個逗號。
一種方法是如果字串中還有另一個逗號,則使用否定的前瞻來防止匹配。
const output = "May 16, 2022, 1:00 PM";
console.log(output.replace(/,(?!.*,)/, " at"));
您的正則運算式/,*$/意味著匹配零個或多個逗號,緊跟在字串末尾 - 顯然這在這里沒有用。
uj5u.com熱心網友回復:
假設字串永遠不會改變,你要替換的逗號總是字串中的最后一個。所以你可以撰寫一個函式,拼接然后連接最后一個逗號索引周圍的字串,如下所示:
function format_date(s) {
const i = s.lastIndexOf(',');
return s.slice(0, i) " at" s.slice(i 1);
}
您發布的正則運算式不會替換字串中的最后一個逗號,而只會替換字串末尾的尾隨逗號(即使沒有)。
uj5u.com熱心網友回復:
使用split()和replace():
const output = "May 16, 2022, 1:00 PM"
const wordReplace = output.split(" ")[2]
const result = output.replace(wordReplace, `${wordReplace.split(",")[0]} at`)
console.log(result)
uj5u.com熱心網友回復:

const regex = /(\d{4}), (\d :\d )/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(\\d{4}), (\\d :\\d )', 'gm')
const str = `May 16, 2022, 1:00 PM`;
const subst = `$1 at $2`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log(result);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/479803.html
標籤:javascript 正则表达式
