正则表达式解析"接受"头

时间:2015-11-16 12:54:28

标签: regex http coldfusion header

我正在使用REST API。客户端在其请求中使用Accept标头发送诸如

之类的内容
  • ...application/vnd.mywebsite+json; version=1...
  • ...application/vnd.mywebsite+xml; version=2...

目前,我正在解析标题并选择要使用字符串函数的媒体类型和版本:

  • json1
  • xml2

我想知道我是否可以用正则表达式更快地做到这一点。

如何从"接受"中提取格式和版本?请求中的标头?我想,我需要进行2次正则表达式调用才能完成这项工作,这没关系。

更新:

使用下面的答案,我尝试使用ColdFusion提取这些,但模式只匹配整个字符串。

理想情况下,我想要一个包含2个元素的数组,即['json', '1']。有任何想法吗 ?

<cfscript>
    arrTitles = reMatch(
        "application/vnd.website\+([A-Za-z]+);\s*version=(\d+)",
        "application/vnd.website+json; version=2"
    );

    writedump(arrTitles);
</cfscript>

请参阅此runnable example

1 个答案:

答案 0 :(得分:2)

你可以使用这样简单的东西:

application/vnd.mywebsite\+([A-Za-z]+);\s*version=(\d+)

类型(json或xml)将在捕获组1中,即组2中的版本。

您可以看到它正常工作here