首页 > 解决方案 > 正则表达式:删除除字母和分隔符之外的所有内容

问题描述

我目前正在使用替换语句来替换字符串的某些部分。我认为我的代码有点过头了,可以简化:

const locales = 'fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5'
locales = locales.replace('-','_')
locales = locales.replace(';q=','')
locales = locales.replace(/[0-9]/g,'')
locales = locales.replace('.','')

最后,我想使用正则表达式从字符串中删除除语言环境之外的所有内容并替换-_. 我希望最终的字符串看起来像这样:

'fr_CH, fr, en, de, *'

标签: javascriptregex

解决方案


精心挑选的正则表达式可以在一次替换中去掉权重。第二个切换-下划线的连字符_

const locales = 'fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5';
newLocales = locales.replace(/;q=\d*\.\d*/g,'').replace(/-/g,'_');
console.log(newLocales);   //  fr_CH, fr, en, de, *

推荐阅读