-
慕村225694
使用正则表达式,您可以获得第二个日期,如下所示:const regex = /\/(?:.*?(\d{1,2}\w{3}\d{0,4}))\/.*?$/;const [, date] = regex.exec("https://www.example.com/exampletitle21sep11oct2020/index.html");console.log({ date })const regex = /\/(?:.*?(\d{1,2}\w{3}\d{0,4}))\/.*?$/;const [, date] = regex.exec("https://www.example.com/exampletitle21sep9oct2020/index.html");console.log({ date });console.log(regex.exec("https://www.example.com/exampletitle21sep9oct/index.html")[1])
-
30秒到达战场
您可以找到并解析包含以下模式的路径:^ Line start.+ One or more of anything(\d{2}) 2-digit date(\w{3}) 3-letter month (lowercase)(\d{2}) 2-digit date(\w{3}) 3-letter month (lowercase)(\d{4}) 4-digit year$ Line end例子我用moment来处理日期解析。const expression = /^.+(\d{2})(\w{3})(\d{2})(\w{3})(\d{4})$/;const format = 'DD MMM YYYY';const toTitleCase = (str) => str.charAt(0).toUpperCase() + str.slice(1);const parseDates = (path) => { const url = new URL(path), tokens = url.pathname.split('/'), found = tokens.find(token => token.match(expression)); if (!found) return null; const [ , startDate, startMonth, endDate, endMonth, year ] = found.match(expression); return { start : moment(`${startDate} ${toTitleCase(startMonth)} ${year}`, format), end : moment(`${endDate} ${toTitleCase(endMonth)} ${year}`, format) };};const dates = parseDates('https://www.example.com/exampletitle21sep11oct2020/index.html');console.log(dates);<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>展开片段
-
梵蒂冈之花
仅使用一个正则表达式,一切都会简单得多:var url = 'https://www.example.com/exampletitle21sep11oct2020/index.html'var res = url.match( /.*?(\d+[a-z]+\d{4})\/.*?$/i );// res === [ "https://www.example.com/exampletitle21sep11oct2020/index.html", "11oct2020" ]var endDate = res[1];// endDate === "11oct2020"或(但“exampletitle”不得以数字结尾):var res = url.match( /.*?(\d+[a-z]+)(\d+[a-z]+)(\d{4})\/.*?$/i );// [ "https://www.example.com/exampletitle21sep11oct2020/index.html", "21sep", "11oct", "2020" ]或者:var res = url.match( /.*?(\d+)([a-z]+)(\d+)([a-z]+)(\d{4})\/.*?$/i );// [ "https://www.example.com/exampletitle21sep11oct2020/index.html", "21", "sep", "11", "oct", "2020" ]但是,如果您知道日期始终是 2 位数字(始终是“01”,而不是“1”),则“exampletitle”可以是任何字符串:var res = url.match( /.*?(\d{2}[a-z]+\d{4})\/.*?$/i );var res = url.match( /.*?(\d{2}[a-z]+)(\d+[a-z]+)(\d{4})\/.*?$/i );var res = url.match( /.*?(\d{2})([a-z]+)(\d+)([a-z]+)(\d{4})\/.*?$/i );
-
狐的传说
试试这个更新const url = "https://www.example.com/exampletitle21sep11oct2020/index.html";const urlData = url.split('/');const datePart = urlData[urlData.length-2];const res = datePart.slice(-9); <-- this will give you "11oct2020" -->