我有一個字串,我需要從中提取特定文本
let str = 'id = "Test This is" id ="second" abc 123 id ="third-123"';
let res = str.match(/[^id ="\[](.*)[^\]]/g);
console.log(res);
我只想要 ids 中的文本['Test This is','second','third-123']
但是我[ 'Test This is" id ="second" abc 123 id ="third-123"' ]
在第一個 id 之后得到了我不想要的整個文本。我需要模式方面的幫助。
uj5u.com熱心網友回復:
您的模式使用否定字符類,您可以在其中排除匹配列出的單個字符,并排除匹配[以及]示例資料中不存在的匹配。
這樣你就可以將字串中的第一個字符T與[^id ="\[]最后一個字符匹配;在字串[^\]]和.*捕獲之間。
我建議使用否定字符類來排除匹配":;
\bid\s*=\s*"([^"]*)"
正則運算式演示
let str = 'id = "Test This is" id ="second" abc 123 id ="third-123"';
let res = str.matchAll(/\bid\s*=\s*"([^"]*)"/g);
console.log(Array.from(str.matchAll(/\bid\s*=\s*"([^"]*)"/g), m => m[1]));
uj5u.com熱心網友回復:
您可以將其簡化為與引號在字串中的位置無關的非貪婪正則運算式:
let str = 'id = "Test This is" id ="second" abc 123 id ="third-123"';
let res = str.match(/".*?"/g);
console.log(res);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/360017.html
標籤:javascript 正则表达式 细绳 比赛
上一篇:如何為電子郵件簽名優化此代碼?
下一篇:哪個更快?修剪()或正則運算式?
