我正在使用以下正则表达式查找给定字符串中title
标记的内容:
alert("<title >kjkj</title><title>jjjjj</title>".match(/<title[^>]*>([^<]+)<\/title>/)[1]);
接下来,我想找到content
的{{1}}:
meta property="og:title"
是一个字符串
我不知道该怎么做。 我不能使用jQuery或创建任何DOM元素。它纯粹是一个字符串,我只能处理给定的字符串
答案 0 :(得分:2)
好的,没有DOM,这是正则表达式:
/content\=\"([A-Za-z0-9 _]*)\"/
如果由于某种原因,字符串中还有其他内容属性,您不想匹配,则可以更具体:
/meta\sproperty\=\"og\:title\"\scontent\=\"([A-Za-z0-9 _]*)\"/
This是一个非常有用的网站,可以轻松测试不同类型的正则表达式。
答案 1 :(得分:1)
虽然可以(通常建议)在不使用正则表达式的情况下获取属性,但我已经创建了一个尝试从html标记字符串中提取所有属性的文件。
var string = '<a href="next.html" title="\'Next\' >>" target="_self" onclick="var target=\'_blank\'; window.open(this.href + \"?test=1\", target); return false;">Next ></a>';
var regex = new RegExp('[\\s\\r\\t\\n]*([a-z0-9\\-_]+)[\\s\\r\\t\\n]*=[\\s\\r\\t\\n]*([\'"])((?:\\\\\\2|(?!\\2).)*)\\2', 'ig');
var attributes = {};
while ((match = regex.exec(string))) {
attributes[match[1]] = match[3];
}
输出:
{
href: "next.html",
onclick: "var target='_blank'; window.open(this.href + \"?test=1\", target); return false;",
target: "_self",
title: "'Next' >>"
}
它的工作原理是在字母,数字,下划线和连字符之后加上等号,并且后跟引号或撇号。如果属性还包含其他撇号或引号,它将使用撇号/引号的匹配来确定属性何时结束。
我试图考虑可能的换行符和间距,但是,我仍然发现了一些边缘情况会导致属性包含等号的问题。
修改强>
调整上面的代码以双重转义空格和行,以及修复嵌套等号[{1}}和转义引号=
和撇号\"
的问题。
答案 2 :(得分:-1)
您可以使用此Jquery获取标题标记文本和元标记属性。
var title = $('title').text();
var meta_property = $('meta').attr('property');