我觉得我已经很接近这里的解决方案了,但我似乎不太明白。我的目标是一次获取一组字符串,[ 'en', 'en-us', 'en_us', 'zh-hans-TW' ]
并生成 [ 'en', 'en', 'en', 'zh-hans']
。我尝试了几种不同的方法,但没有找到完全正确的解决方案。
我相信,这是我最接近的,匹配除了“en”之外的所有内容。
/([a-zA-Z-_]+)[-_].+/
(一个或多个 aA-zZ 字符或 -_ 后跟 - 或 _ 和其他字符)
我尝试了负前瞻(我不太擅长),并想出了这个超过匹配并捕获整个字符串的方法
/([a-zA-Z-_]+)(?![-_].+)/
(一个或多个 aA-zZ 字符或 -_ 后面不跟 - 或 _ 以及其他字符)
有人可以在这里指出正确的解决方案吗?
最佳答案
您可以删除不想保留的字符串的末端,而不是匹配您希望保留的字符串部分:
/[-_][a-z]+$/i
这是 Javascript 中的一个实现:
var array1 = [ 'en', 'en-us', 'en_us', 'zh-hans-TW' ];
var array2 = array1.map(function(str) {
return str.replace(/[-_][a-z]+$/i, "");
});
console.log(array2);
这个输出:
[ 'en', 'en', 'en', 'zh-hans' ]
关于javascript - 语言代码剥离正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28843263/