我有一个语言下拉列表和一个javascript函数,可以将页面更改为所选的相应语言。我的正则表达式替换需要帮助:
例如,我希望此网址变为此网址: http://localhost:7007/en/Product/Detail/1038 HTTP://本地主机:7007 / FR /产品/详情/ 1038
function languageChange(sender) {
var lang = $(sender).val();
var target = window.location.href;
target = target.replace(/(http:\/\/.*?)([a-zA-Z]{2})(.*$)/gim, '$1' + lang + '$3');
window.location = target;
}
答案 0 :(得分:2)
您的网址是否始终相同?如果是这样,您可能根本不需要正则表达式。拆分每个“/”的网址,替换索引3,然后将你的数组加回到“/".
以下是代码示例:
function changeLanguage(url, newLang) {
var url = url.split('/');
url[3] = newLang;
return url.join('/');
}
changeLanguage('http://localhost:7007/en/Product/Detail/1038','Fr');
注意:我最初在回复中写了“拼接”而不是“加入”。加入是正确的方法。
答案 1 :(得分:2)
这是一个处理字符串中任意数量的URL的函数,并替换语言部分(路径的第一部分),仅在存在且长度为2到4个字符时才会替换:
function changeLanguage(text, lang) {
return text.replace(
/\b(\w+:\/\/[^\/]+\/)[A-Z]{2,4}(?=[\/\s]|$)/gim,
'$1' + lang);
}
编辑:转换为功能格式。
答案 2 :(得分:1)
使用此正则表达式:
target =
target.replace(/(https?:\/\/[^/]+)\/?([^/]*)(.*)/gi, '$1/' + lang + '$3');
如果是lang='fr'
然后target
保留http://localhost:7007/fr/Product/Detail/1038
值;