javascript正则表达式获取标签属性值

时间:2015-05-24 05:47:17

标签: javascript regex

我正在使用以下正则表达式查找给定字符串中title标记的内容:

alert("<title  >kjkj</title><title>jjjjj</title>".match(/<title[^>]*>([^<]+)<\/title>/)[1]);

接下来,我想找到content的{​​{1}}:

meta property="og:title" 是一个字符串

我不知道该怎么做。 我不能使用jQuery或创建任何DOM元素。它纯粹是一个字符串,我只能处理给定的字符串

3 个答案:

答案 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');