我有一个字符串,可能如下(1种可能性):
"1/1/2024; 02/01/2024; 2024-10-01"
我想(从右侧)返回多种可能的日期格式的最后一次出现:
mm/dd/yyyy, mm/dd/yy, yyyy-mm-dd, m/dd/yyyy, m/d/yyyy
因此,从上面的示例中,仅查找并返回
2024-10-01
。我怎样才能做到这一点?我正在考虑使用带有 OR 条件的回溯,但它不起作用:
(?!\d{2}/\d{2}/\d{4}|\d{2}/\d{2}/\d{2}|\d{4}-\d{2}-\d{2}|\d{1}/\d{2}/\d{4}|\d{2}/\d{1}/\d{4}|\d{1}/\d{1}/\d{4})
let txt = "1/1/2024; 2/1/2024; 2024-10-1; 3/3/2024; 2005-3-3; 24-06-06";
let res = txt.replace(/(^|(?<=[;\s*\/\-]))\d{1}((?=[\/\-;\s])|$)/g, '0$&').split(';').map(x => x.trim())
.filter(x => (x.match(/^((\d{2}[\/\-]){2}\d{4})$/g) || x.match(/^(\d{4}([\/\-]\d{2}){2})$/g) || x.match(/^(\d{2}[\/\-]){2}\d{2}$/g))) ;
console.log(res);