Javascript 正则表达式将文本与第一次出现的分隔符相匹配

Javascript 正则表达式将文本与第一次出现的分隔符相匹配,javascript,regex,Javascript,Regex,这是我想与RegEx匹配的数据: <table> <tr> <td> <font size="4">Speciality</font> </td> <td> <font size="4">somespeciality</font> </td> </tr> <tr> <td&

这是我想与RegEx匹配的数据:

<table>
  <tr>
    <td>
      <font size="4">Speciality</font>
    </td>
    <td>
      <font size="4">somespeciality</font>
    </td>
  </tr>
  <tr>
    <td>
      <font size="4">Date</font>
    </td>
    <td>
      <font size="4">somedate</font>
    </td>
  </tr>
</table>
我有个约会。正确的方法是什么


谢谢。

您需要在字符类之后使用量词

[\s\S]*?

为了记录在案,如果您确实希望使用普通DOM方法来实现这一点,您可以执行以下操作。它获取所有元素,找到第一个具有与文本匹配的文本内容的元素,获取其标记名,然后找到具有该标记名的下一个元素并返回文本内容:

var data = '<table><tr><td><font size="4">Speciality</font></td>' +
           '<td><font size="4">somespeciality</font></td></tr>' +
           '<tr><td><font size="4">Date</font></td><td><font size="4">' +
           'somedate</font></td></tr></table>';

function getSpecial(text, data) {
  var div = document.createElement('div');
  div.innerHTML = data;
  var tagName;

  var nodes = div.getElementsByTagName('*');

  for (var i=0, iLen=nodes.length; i<iLen; i++) {
    if (tagName && nodes[i].tagName == tagName) {
      return nodes[i].textContent;
    }

    if (nodes[i].textContent.trim() == text) {
      tagName = nodes[i].tagName;
    }
  }
}

console.log(getSpecial('Speciality', data)); // somespeciality
var数据='Speciality'+
“一些特产”+
“日期”+
“某天”;
函数getSpecial(文本、数据){
var div=document.createElement('div');
div.innerHTML=数据;
变量标记名;
var nodes=div.getElementsByTagName('*');

对于(var i=0,iLen=nodes.length;顺便说一句,与您的问题无关,这个帖子已经过时了。请改用css。请看。@DavidThomas实际上我正在处理一个旧网站上的数据,试图获取它们,然后将它们存储在SQLite数据库中。@RobG Yep这篇文章有几次越过了我的路径。。哈哈,但我确实不得不这么做o、 .DOM遍历和其他技术对我来说实现起来会更复杂。:-)谢谢!这也是我问题的正确答案。但是关于性能,这会有相同的性能吗?(我用ajax一个接一个地加载12000多个页面,匹配15个字符串。。用这段代码在webkit中使用XSS)
var data = '<table><tr><td><font size="4">Speciality</font></td>' +
           '<td><font size="4">somespeciality</font></td></tr>' +
           '<tr><td><font size="4">Date</font></td><td><font size="4">' +
           'somedate</font></td></tr></table>';

function getSpecial(text, data) {
  var div = document.createElement('div');
  div.innerHTML = data;
  var tagName;

  var nodes = div.getElementsByTagName('*');

  for (var i=0, iLen=nodes.length; i<iLen; i++) {
    if (tagName && nodes[i].tagName == tagName) {
      return nodes[i].textContent;
    }

    if (nodes[i].textContent.trim() == text) {
      tagName = nodes[i].tagName;
    }
  }
}

console.log(getSpecial('Speciality', data)); // somespeciality