Javascript 正则表达式将文本与第一次出现的分隔符相匹配
这是我想与RegEx匹配的数据: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&
<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