如何在html字符串中获取标题标记?
嘿,我正在使用ajax将html页面加载到字符串中,现在我想找到页面的标题并使用它。
现在我确实设法使用正则表达式获取
但是返回标签以及标题本身,我希望从字符串中提取,或者是否有办法在正则表达式中执行此操作?
这是我的代码:
var title = result.match(/]*>([^<]+)/);
现在我怎么得到这个/之后的实际标题呢?
将响应html字符串加载到jQuery对象中,然后检索文本
$(response).find("title").text();
.match()
返回匹配数组,使用
var title = result.match(/]*>([^<]+)<\/title>/)[1];
在括号中获得价值
码:
var title = result.match("(.*?) ")[1];
一个相对简单的普通JavaScript和非正则表达式方法:
var htmlString = 'Some title Some text, in a paragraph!
', html = document.createElement('html'), frag = document.createDocumentFragment(); html.innerHTML = htmlString; frag.appendChild(html); var titleText = frag.firstChild.getElementsByTagName('title')[0].textContent || frag.firstChild.getElementsByTagName('title')[0].innerText; console.log(titleText);
JS小提琴演示 。
显然,我必须猜测你的HTML字符串,并从内容周围删除(假定存在的)封闭的 /
标记。 但是,即使这些标签在字符串中它仍然有效: JS Fiddle演示 。
还有一个function稍强的方法:
function textFromHTMLString(html, target) { if (!html || !target) { return false; } else { var fragment = document.createDocumentFragment(), container = document.createElement('div'); container.innerHTML = html; fragment.appendChild(container); var targets = fragment.firstChild.getElementsByTagName(target), result = []; for (var i = 0, len = targets.length; i
JS小提琴演示 。
使reg exp不区分大小写。 这是完整的代码:
var regex = /(.*?)<\/title>/gi; var input = "Hello World ..."; if(regex.test(input)) { var matches = input.match(regex); for(var match in matches) { alert(matches[match]); } } else { alert("No matches found!"); }