使用正则表达式删除文本中的<跨度>和</跨度>

Remove <span> and </span> in Text using RegEx

本文关键字:跨度 正则表达式 删除 文本      更新时间:2023-09-26

我正在尝试获取<a>元素中可用的文本。我已经使用innerHTML来检索内部文本,但是在少数<a>元素中,内部文本放置在<span>元素中。

在检索文本值时,它与输出字符串一样<span>sample text</span>。谁能帮我使用 RegEx 删除输出字符串中的<span></span>,以便我的输出字符串中只能有sample text

<a href="#"><span>Sample Text</span></a>

注意:我没有在页面中使用任何Javascript库。

innerTexttextContent(取决于浏览器)获取不带span标签的元素文本:

var elem = document.getElementsByTagName('a')[0],
    text = ('innerText' in elem)? 'innerText' : 'textContent';
var content = elem[text];

小提琴

如果可以包含 jQuery,则可以使用 - $("a").text()而不使用任何正则表达式。

而使用纯粹的JavScript——

/* elem you can get in many ways, by id, by tagname or by class etc.
   I am using tagName for your specific case
*/
var elem = document.getElementsByTagName('a')[0],
/* use innerText or textContent, whichever is available in browser */     
var content = elem.innerText || elem.textContent;
您可以使用

querySelectorAll查找包含<span>子项的所有<a>标签,并根据需要获取文本:

var elems = document.querySelectorAll("a > span");
for(var e in elems) {
  var element = elems[e];
  var aTag = element.parentNode;
  if(aTag.innerText) aTag.innerText = element.innerText;
  else aTag.textContent = element.textContent;
}

这是一个jsFiddle来演示上述内容。

澄清一下,document.querySelectorAll仅在IE8+(和大多数其他现代浏览器)上原生支持,但可以使用polyfill。