如果我們有以下字串:
"hukhkhk\nClosing Date: Friday 22nd April 2022\nwdwqdwqdwqd\nClosing Date: Friday 22nd April 2023\newdewfewf"
我們想從中獲取 2 個日期"Friday 22nd April 2022"和"Friday 22nd April 2023"
如何使用 js 獲取所有捕獲的字串的陣列。
[ "Friday 22nd April 2022", "Friday 22nd April 2023" ]
我的正則運算式中有一個問題,但不確定如何修復它,以使其與\n找到的第一個之間的所有內容都不匹配:
(?<=Closing Date:\s)(.*)(?=\\n)
https://regexr.com/6k2uf
我試過的js是這樣的:
var reg = new RegExp('(?<=Closing Date: )(.*)(?=\\n)/g');
reg.exec("hukhkhk\nClosing Date: Friday 22nd April 2022\nwdwqdwqdwqd\nClosing Date: Friday 22nd April 2023\newdewfewf")
uj5u.com熱心網友回復:
您的示例資料以及任何具有所需文本的易于定義標記的資料的另一種方法是將split資料放入行陣列(標記為\n),將陣列filter應用于陣列以洗掉不包含標記字串的元素,最后.map是包含標記字串后面所需部分的陣列。
這些程序可以在一行中串聯在一起,如以下代碼段所示:
string = "hukhkhk\nClosing Date: Friday 22nd April 2022\nwdwqdwqdwqd\nClosing Date: Friday 22nd April 2023\newdewfewf";
markerString = "Closing Date: ";
datesArray = string.split('\n').filter(text => text.indexOf(markerString) > -1).map(text => text.slice(text.indexOf(markerString) markerString.length));
console.log(datesArray)
uj5u.com熱心網友回復:
(?<=Closing Date: )(.*?)(?=\\n)
之后 開始匹配Closing Date: (包括空格)
在第一次遇到之前停止匹配\n
這適用于您的示例
活生生的例子
uj5u.com熱心網友回復:
使用正則運算式查找所有非日期內容:
const re = /(?<junk>(?:\\n|^).*?(?:\\n|$))(?<delimiter>Closing Date: )?/gm
然后使用 JS split 獲取僅包含日期的陣列
const dates = input.split(re);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/460473.html
標籤:javascript 正则表达式
