我需要在等號之間捕獲兩個匹配項:(test1)=(test2)例如 match1 = test1 和 match2 = test2。到目前為止,我已經能夠使用/\([\s\S\)\(]*?\)/gmi其中大部分有效,除非在等號的兩側有一個額外的關閉括號,即:(test1)=(te)st2)。
我可以創建什么正則運算式來讓我成功結束兩場比賽,如下所示:
"(test1)=(tes=)t2)".match( /\([\s\S\)\(]*?\)/gmi ) === ["test1", "tes=)t2"]
uj5u.com熱心網友回復:
對于問題中的示例,如果支持使用環視,您可以斷言右括號不能包含=或)向右。
請注意,您可以省略/m標志,因為模式中沒有錨點,您也可以省略/i標志,因為模式沒有專門匹配大寫或小寫字符。
let regex = /(?<=\().*?(?=\)(?![^\s=)]))/g;
let str = "(test1)=(tes=)t2)";
console.log(str.match(regex));
或者使用沒有后視斷言的捕獲組:
let regex = /\((.*?)\)(?![^\s=])/g;
let str = "(test1)=(tes=)t2)";
const result = Array.from(str.matchAll(regex), m => m[1]);
console.log(JSON.stringify(result) === JSON.stringify(["test1", "tes=)t2"]));
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/334975.html
標籤:javascript 正则表达式
上一篇:保存最近的搜索reactjs
