亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 match 函數或其他方式檢索 <span> 和 </span> 之間的多個單詞?

如何使用 match 函數或其他方式檢索 <span> 和 </span> 之間的多個單詞?

浮云間 2023-04-27 15:12:36
說我的字符串是這樣的:var testexample = <p nameIt="Title">Title_Test</p><figure class="t15"><table><thead><tr><th><span>Column1</span></th><th><span>Column2</span></th></tr></thead><tbody><tr><td><span>Entry1</span></td><td><span>Entry2</span></td><td><span>ready</span></td></tr></tbody></table></figure><p ex="ready">!aaa; 這是一個相當長的字符串,但它是一個以字符串形式寫出的表格。<span>我如何從和之間獲取單詞</span>?例如,我希望它返回 Column1、Column2、Entry1、Entry2(也許在一個數組中?)到目前為止,這是我嘗試過的:storing = testexample.match(/<span>(.*)</span>/);但它只返回“Column1”我也試過做 matchAll、exec 和做/<span>(.*)</span>/g。這些結果給了我整個字符串,什么也沒有,比如<th><span>Column1</span></th>,或者只是“Column1”。我是 javascript 的新手,所以我不確定自己做錯了什么,因為我已經閱讀了這方面的文檔。任何幫助,將不勝感激。謝謝。
查看完整描述

3 回答

?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

您的正則表達式應該使用全局和多標志——但除此之外,您需要檢查多個實例……像這樣:

<\s*span[^>]*>(.*?)<\s*\/\s*span\s*>

因為如前所述,您無法使用正則表達式可靠地解析 HTML——我盡了最大努力確保您仍然可以在標簽內使用樣式或屬性<span>。IE<span style="color:#FF0000;">仍然可以使用我提供的示例。

查看完整回答
反對 回復 2023-04-27
?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

為了幫助您找到答案,您應該提供您希望用于此類工作的環境信息。

它是瀏覽器還是 node.js,你有 HTML 作為文本還是在頁面中?

我會針對您的問題提出另一種解決方案,即創建您將查詢以提取所需數據的dom 元素。

/**

?* Helper function to transform HTML string to dom element

?* @param {string} html

?* @param {string} elementType

?* @returns {HTMLDivElement}

?*/

function htmlToElement(html, elementType = 'div') {

? const template = document.createElement(elementType);


? template.innerHTML = html.trim(); // Never return a text node of whitespace as the result


? return template;

}


const htmlString = `<p nameIt="Title">Title_Test</p><figure class="t15"><table><thead><tr>

<th><span>Column1</span></th><th><span>Column2</span></th></tr></thead><tbody><tr><td><span>Entry1</span></td><td><span>Entry2</span></td><td><span>ready</span></td></tr></tbody></table></figure><p ex="ready">`;?

const element = htmlToElement(htmlString);


// extract inner text from spans as array of strings

const arrayOfWords = [...element.querySelectorAll('span')].map(span => span.innerText);

// convert array of strings to space separated string

const wordsJoinedWithSpace = arrayOfWords.join(' ');

// log a result in a console

console.log({arrayOfWords, wordsJoinedWithSpace});


查看完整回答
反對 回復 2023-04-27
?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

正如所指出的,您無法使用 Regex 可靠地解析隨機 HTML。但是,假設您只想解析問題中的那種 HTML 表,這是您的正則表達式:

<span>(.*?)<\/span>

我改變了幾件事:

  1. 你沒有逃脫/in</span>所以你的正則表達式實際上提前結束了

  2. ?在匹配任何部分中添加了一個。這樣,正則表達式將匹配最短的可能序列,因此您可以匹配所有跨度。

  3. 調用match將匹配此正則表達式的所有出現。這也將包括<span>/</span>部分

  4. 修剪開始和結束<span>部分

這是完整的例子:

var testexample = `<p nameIt="Title">Title_Test</p><figure class="t15"><table><thead><tr>

<th><span>Column1</span></th><th><span>Column2</span></th></tr></thead><tbody><tr><td><span>Entry1</span></td><td><span>Entry2</span></td><td><span>ready</span></td></tr></tbody></table></figure><p ex="ready">!aaa`;


var regex = /<span>(.*?)<\/span>/g;


var match = testexample.match(regex);

var columnContent = match.map(m => m.replace("<span>", "").replace("</span>", ""));

console.log(columnContent[0]); // Column1

console.log(columnContent[1]); // Column2


查看完整回答
反對 回復 2023-04-27
  • 3 回答
  • 0 關注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號