gpt4 book ai didi

javascript - 匹配接受语言 header 的正则表达式

转载 作者:行者123 更新时间:2023-11-30 12:54:12 25 4
gpt4 key购买 nike

我正在尝试匹配 http 请求的以下接受语言 header 字段。

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]

我的正则表达式有什么问题?

最佳答案

您的第一个捕获组匹配所有不包含破折号并在破折号 - 处停止的内容。在你的最后一个字符串中你没有破折号,所以它匹配整个字符串。正则表达式的其他部分是可选的,因此它们不匹配任何内容。

您可以通过在您的第一个捕获组中不允许 ; 来针对这种特殊情况修复它:

/([^-;]*)(?:-([^;]*))?(?:;q=([0-9]\.[0-9]))?/

PS:我还在最后一个捕获组中修复了你的点。它匹配任何字符,现在它只匹配 . 字符。

关于javascript - 匹配接受语言 header 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19835696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com