如何用JavaScript正则将parsehub提取的日期转为dd/mm/yyyy格式?
用JavaScript将
thursday 22 december 2022转换为dd/mm/yyyy格式 可以实现,但单纯依赖正则无法完成月份名称到数字的转换,需要结合正则提取关键信息+月份映射表来完成。以下是具体实现方案:
实现代码
function convertToDDMMYYYY(inputDate) { // 建立英文月份到两位数字的映射 const monthMapping = { january: '01', february: '02', march: '03', april: '04', may: '05', june: '06', july: '07', august: '08', september: '09', october: '10', november: '11', december: '12' }; // 正则表达式:忽略星期部分,捕获日、月份名称、年份 const dateRegex = /^\w+\s+(\d{1,2})\s+(\w+)\s+(\d{4})$/i; const matchResult = inputDate.match(dateRegex); if (!matchResult) { return '无效的日期格式'; // 格式不匹配时返回提示或null } // 提取并格式化各部分 const day = matchResult[1].padStart(2, '0'); // 补零确保两位数字 const month = monthMapping[matchResult[2].toLowerCase()]; const year = matchResult[3]; return `${day}/${month}/${year}`; } // 测试示例 console.log(convertToDDMMYYYY('thursday 22 december 2022')); // 输出: "22/12/2022" console.log(convertToDDMMYYYY('monday 3 march 2021')); // 输出: "03/03/2021"
关键说明
- 正则的作用:
dateRegex用于从输入字符串中提取出日、月份名称和年份,忽略开头的星期部分。i标志确保匹配时不区分月份名称的大小写(比如December或december都能识别)。 - 月份映射:由于正则无法将
december这类语义化名称直接转换为12,需要通过预定义的映射表完成转换。 - 日期补零:使用
padStart(2, '0')将1位的日期(如5)转换为两位数字(如05),符合dd/mm/yyyy的格式要求。
内容的提问来源于stack exchange,提问作者Danny Geurts
相关产品推荐
相关产品推荐

