[英]Regex parsing in javascript
你能幫助我解析我嘗試了很多但無法做到的正則表達式嗎?
輸入: <a onclick="javascript:collapse('displayText','hideText','whyInfo-arrow-image')"><span sd:text="${whyInfoLabel}">Learn more about Authentication</span> <img id="whyInfo-arrow-image" sd:src="${downwardArrowImage}" height="20" width="20" >
預期: sd:text="${whyInfoLabel}"
和sd:src="${downwardArrowImage}"
我的嘗試 1 : "/\\$\\{(\\w*)\\}/g"
它只能選擇{whyInfoLabel}
& {downwardArrowImage}
我的嘗試 2 : "/sd.*\\$\\{(\\w*)\\}/g"
這無法拆分。
我對 Regex 和 JavaScript 很陌生。
任何幫助都會很棒。
你在JS,為什么不使用DOM來解析HTML呢? 正則表達式並非旨在解析 HTML,但 DOM 提供了專門為此目的而設計的實用程序。
如果您的瀏覽器支持它,您應該考慮使用DOMParser來執行此操作:
var html = "<a onclick=\"javascript:collapse('displayText','hideText','whyInfo-arrow-image')\"><span sd:text=\"${whyInfoLabel}\">Learn more about Authentication</span> <img id=\"whyInfo-arrow-image\" sd:src=\"${downwardArrowImage}\" height=\"20\" width=\"20\" >";
var parser = new DOMParser();
var doc = parser.parseFromString(html, "text/html");
var attrText = doc.querySelector('span').getAttribute("sd:text");
console.log(attrText);
var attrSrc = doc.querySelector('img').getAttribute("sd:src");
console.log(attrSrc);
“${whyInfoLabel}”
“${downwardArrowImage}”
試試這個:/( /(sd:.*=".*")/Ug
:. /(sd:.*=".*")/Ug
或者這樣: /\\{(.*)\\}/Ug
這應該給你一個數組中的兩個結果:
/sd:(?:text|src)=\"[^\"]*"/g
正則表達式匹配 'sd:' 開頭,然后是 'text' 或 'src'、等號、雙引號后跟零個或多個不是雙引號的字符,最后是雙引號。
只需調用(假設您的文本位於名為'text'
的變量中:
var regex =/sd:(?:text|src)=\"[^\"]*"/g;
var matches = text.match(regex);
var match0 = matches[0];
var match1 = matches[1];
你可以試試這個正則表達式。 希望這可以幫助。
const regex = /\\w+:\\w+="\\$\\{\\w*\\}"/g; const input = '<a onclick="javascript:collapse(' + 'displayText' + ',' + 'hideText' + ','+ 'whyInfo-arrow-image' + ')"><span sd:text="${whyInfoLabel}">Learn more about Authentication</span> <img id="whyInfo-arrow-image" sd:src="${downwardArrowImage}" height="20" width="20" >'; console.log(input.match(regex))
asdf = new RegExp('(sd:.+?[}])+', 'gi');
console.log(str.match(asdf));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.