解析 "Accept" header 的正则表达式
Regex to parse the "Accept" header
我正在研究 REST API。客户在他们的请求中使用 Accept header 来发送像
这样的东西
...application/vnd.mywebsite+json; version=1...
或
...application/vnd.mywebsite+xml; version=2...
。
目前,我正在解析 headers 并选择媒体类型和版本以使用字符串函数:
json
和 1
xml
和 2
我想知道是否可以使用正则表达式更快地做到这一点。
如何从请求中的 "Accept" header 中提取格式和版本?我想,我需要进行 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。
你可以使用像这样简单的东西:
application/vnd.mywebsite\+([A-Za-z]+);\s*version=(\d+)
类型(json 或 xml)将在捕获组 1 中,版本在组 2 中。
您可以看到它正在运行 here。
我正在研究 REST API。客户在他们的请求中使用 Accept header 来发送像
这样的东西...application/vnd.mywebsite+json; version=1...
或...application/vnd.mywebsite+xml; version=2...
。
目前,我正在解析 headers 并选择媒体类型和版本以使用字符串函数:
json
和1
xml
和2
我想知道是否可以使用正则表达式更快地做到这一点。
如何从请求中的 "Accept" header 中提取格式和版本?我想,我需要进行 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。
你可以使用像这样简单的东西:
application/vnd.mywebsite\+([A-Za-z]+);\s*version=(\d+)
类型(json 或 xml)将在捕获组 1 中,版本在组 2 中。
您可以看到它正在运行 here。