0

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

我只想返回:html

到目前为止,我看到的正则表达式类似于:

/[^text/]*$/

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

我想要字符串中“text/”之后的任何内容,但无论出于何种原因,我得到的只是最后两个字母。为了清楚起见,我查阅了其他一些帖子,包括:

使用 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。

4

2 回答 2

1

你的正则表达式应该是:

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

并捕获第一组。

由于 threre 是 / 在您的正则表达式中,请使用new RegExp()构造函数:

var re = new RegExp("^text/([^;\\s]+)");
于 2013-05-28T20:14:13.757 回答
0

您的正则表达式的主要问题是它忽略字符t, e,x/单独并匹配其他字符。你想匹配在/和 之前的组;,所以你的正则表达式是

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

这有一个非捕获组((?:[^/]*/))匹配(并忽略)直到第一个字符/,然后一个捕获组(([^;]*))匹配并保留您想要的文本在第一个之前;

于 2013-05-28T20:14:33.907 回答