如何在javascript中使用正则表达式获取基本URL

时间:2013-07-11 08:39:09

标签: javascript regex

我的应用程序将在多个环境中工作,我需要获得共同的价值(我的应用程序的基本网址)才能工作..

从我的窗口位置如何从一开始就获得某些部分..

示例:

    http://xxxxx.yyyy.xxxxx.com:14567/yx/someother/foldername/index.html

我怎么才能得到:

http://xxxxx.yyyy.xxxxx.com:14567/yx/

我的尝试:

var base = \w([yx]/)

基地只选择yx/如何获取前面的值?

这部分..

提前感谢..

5 个答案:

答案 0 :(得分:3)

如果已知“其他”是您网站的根目录,请替换

    \w([yx]/)

    (.*\/)someother\/

(请注意/字符在这里转义),它给出了第一个匹配:

   http://xxxxx.yyyy.xxxxx.com:14567/yx/

然而,正则表达式可能不是这样做的最佳方式;看看是否有任何方式可以通过其他方式传递基本URL,例如从页面后面运行的代码中传递。

答案 1 :(得分:1)

如果您不介意忽略尾部斜杠,则可以在没有正则表达式的情况下执行此操作:

var url = 'http://xxxxx.yyyy.xxxxx.com:14567/yx/someother/foldername/index.html';

url.split('/', 4).join('/');
//-> "http://xxxxx.yyyy.xxxxx.com:14567/yx"

如果你想要尾部斜杠,可以很容易地附加+ '/'

答案 2 :(得分:0)

请尝试使用regexp:

http\:\/\/[\w\.]+\:\d+\/\w+\/

答案 3 :(得分:0)

这个应该做得很好

http:\/\/[\w\.]+\:\d+\/\w+\/

答案 4 :(得分:0)

也许是这样的?

的Javascript

function myBase(url, baseString) {
    if (url && baseString) {
        var array = url.split(new RegExp("\\b" + baseString + "\\b"));

        if (array.length === 2) {
            return array[0] + baseString + "/";
        }
    }

    return null;
}

var testUrl = "http://xxxxx.yyyy.xxxxx.com:14567/yx/someother/foldername/index.html",
    testBase = "yx";

console.log(myBase(testUrl, testBase))

输出

http://xxxxx.yyyy.xxxxx.com:14567/yx/ 

jsfiddle