最近我一直在使用以下代码来获取用户所在的国家(ISO-3166):
const region = navigator.language.split('-')[1]; // 'US'
我一直以为字符串会类似于en-US
——国家代码会在数组的第二个位置。
我认为这种假设是不正确的。 根据MDN文档,navigator.language
返回: "表示BCP 47中定义的语言版本的字符串。" 阅读BCP 47,主要语言子标记保证是第一个(例如,'en'),但区域代码不保证是第二个子标记。可能存在在区域子标记之前和之后的子标记。
例如"sr-Latn-RS"
是有效的BCP 47语言标记:
sr | Latn | RS
primary language | script subtag | region subtag
< p > navigator.language
返回的值是否是仅包含语言和区域的 BCP 47 子集?或者是否有常用的库或正则表达式可以从语言标记中提取区域子标记?