使用RegExp匹配MIME内容类型的第二部分

时间:2013-05-28 20:09:19

标签: javascript regex

我在StackOverflow上看到了许多示例来获取MIME内容类型的“第二”部分。我想要的是,当提供:text / html;字符集= ISO-8859-1

我想回复:html

到目前为止我见过的正则表达式是这样的:

/[^text/]*$/

但在我的测试中,匹配的结果只是“ml”

我想要字符串中“text /”之后的所有谎言,但无论出于什么原因,我得到的只是最后两个字母。为了清楚起见,我咨询了其他一些帖子,包括:

Get second part of a string using RegEx

我认为这正是我想要的,但我的测试显示正则表达式不起作用。非常感谢任何帮助。

编辑以扩大问题范围。我正在尝试隔离jquery对象中返回的部分Content-Type。

    var regex_content = /[^text/]([^;\s]+)/
    var contentType = jqXHR.getResponseHeader("Content-Type");
    alert(contentType.match(regex_content));

使用其他人提供的regex_content,如果内容类型为text / html,则返回html,tml;字符集= ISO-SOMENUMBERS。我想只有html匹配。

2 个答案:

答案 0 :(得分:1)

你的正则表达式应该是:

^text/([^;\s]+)

并捕获第一组。

因为你的正则表达式中有一个/,所以使用new RegExp()构造函数:

var re = new RegExp("^text/([^;\\s]+)");

答案 1 :(得分:0)

正则表达式的主要问题是它会单独忽略字符tex/并匹配其他字符。您希望匹配/之后且;之前的组,因此您的正则表达式将是

/(?:[^/]*\/)([^;]*)/

这是一个非捕获组((?:[^/]*/))匹配(并忽略)直到第一个/的字符,然后是一个捕获组(([^;]*))来匹配并保持在第一个;之前需要的文字。