Javascript正则表达式替换

时间:2011-04-06 15:33:11

标签: regex

我有一个语言下拉列表和一个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;
}

3 个答案:

答案 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值;