如何通过正则表达式修改URL中的语言标识(附示例)
正确实现语言切换URL替换功能
原代码的问题
- 正则表达式未转义斜杠:
//(?:en|sc)//里的斜杠未用反斜杠转义,会直接引发语法错误,正则中的斜杠必须转义才能被正确识别 location.replace调用逻辑错误:该方法第一个参数需为正则表达式对象,且原正则的匹配范围会错误覆盖URL开头到语言标识的全部内容,无法精准替换目标片段
正确实现代码
$('#tc').on('click', function() { // 精准匹配URL中的/en/或/sc/片段 const langRegex = /\/(en|sc)\//; if (location.href.match(langRegex)) { // 替换为/tc/并执行跳转 const newUrl = location.href.replace(langRegex, '/tc/'); location.replace(newUrl); } });
代码说明
- 正则
/\/(en|sc)\//专门匹配URL内的/en/或/sc/部分,避免误匹配其他包含en/sc的字符串 - 先校验当前URL是否符合替换条件,再生成新URL
- 使用
location.replace跳转不会在浏览器历史中保留原页面记录,若需要保留历史,可替换为location.href = newUrl
内容的提问来源于stack exchange,提问作者Rickyforcode
相关产品推荐
相关产品推荐

