我正在尝试匹配 http 请求的以下接受语言标头字段。
var regex = /([^-]*)(?:-([^;]*))?(?:;q=([0-9].[0-9]))?/
"en-us;q=0.8".match(regex) => ["en-us;q=0.8", "en", "us", "0.8"]
"en".match(regex) => ["en", "en", undefined, undefined]
"en;q=0.8".match(regex) => ["en;q=0.8", "en;q=0.8", undefined, undefined]
问题出在最后一行。它应该恕我直言:
["en;q=0.8", "en", "0.8", undefined]
我的正则表达式有什么问题?