[英]Regex that matches all div tags
我試過這個
var expression = /<div\s*"?.*"?\s*>[\S\s]*?<\/div>/gi;
var regexpress = new RegExp(expression)
matches = text.match(regexpress);
if (matches != null) { returnarray.push(matches); }
return returnarray;
但結果:
input text:
<div wdlm></div>
<div></div>
<div></div>
output array:
element 1:<div wdlm></div> <div></div>
element 2:<div></div>
數組的第一個元素同時需要 2 個 div。
var returnarray = [];
var matches = null;
var expression = /<div\s*"?.*?"?\s*>[\S\s]*?<\/div>/gi;
var regexpress = new RegExp(expression);
matches = text.match(regexpress);
if(matches != null) {
returnarray.push(matches);
}
return returnarray;
另外,我正在思考一個問題:
正則表達式可以動態分配嗎?
就像是
var expression = /<VARIABLE\s*"?.*"?\s*>[\S\s]*?<\/VARIABLE>/gi;
在哪里 VARIABLE 它是一個var VARIABLE
,通過更改VARIABLE
的輸入而不僅僅是div
來獲取代碼中的每個元素?
有人可以幫我解決這個問題嗎?
我不建議使用正則表達式來解析 HTML 字符串。 如果你能忍受這個限制,這里是任意 HTML 標簽的正則表達式解決方案,它不支持嵌套,並且在極端情況下失敗,例如<div title="</div>"></div>
:
const input = '<div wdlm></div>\n' + '<div></div>\n' + '<div></div>'; function parseTags(tag, str) { let re = new RegExp('<' + tag + '\\b\\s*"?.*?"?\\s*>[\\S\\s]*?<\\/' + tag + '>', 'gi'); return str.match(re) || []; } let tags = parseTags('div', input); console.log('- input: "' + input + '"\n- tags: ' + JSON.stringify(tags, null, ' '));
Output:
- input: "<div wdlm></div>
<div></div>
<div></div>"
- tags: [
"<div wdlm></div>",
"<div></div>",
"<div></div>"
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.