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

如何在javascript中使用正则表达式获取基本url,javascript,regex,Javascript,Regex,我的应用程序将在多个环境中工作,在多个环境中,我需要获得通用值(我的应用程序的基本url) 从我的窗口位置如何从一开始就获得某些零件 例如: http://xxxxx.yyyy.xxxxx.com:14567/yx/someother/foldername/index.html 我怎样才能得到: http://xxxxx.yyyy.xxxxx.com:14567/yx/ 我的尝试: var base = \w([yx]/) 基数仅选择yx/如何获取此项前面的值 这部分 提前感谢。如

我的应用程序将在多个环境中工作,在多个环境中,我需要获得通用值(我的应用程序的基本url)

从我的窗口位置如何从一开始就获得某些零件

例如:

    http://xxxxx.yyyy.xxxxx.com:14567/yx/someother/foldername/index.html
我怎样才能得到:

http://xxxxx.yyyy.xxxxx.com:14567/yx/
我的尝试:

var base = \w([yx]/)
基数仅选择
yx/
如何获取此项前面的值

这部分


提前感谢。

如果您不介意忽略尾随斜杠,您可以不使用正则表达式:

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

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

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

如果不介意忽略尾部斜杠,则可以不使用正则表达式:

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

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

如果您想要后面的斜杠,可以很容易地用
+'/'

附加,如果已知“someother”是站点的根,则替换

    \w([yx]/)

(请注意,此处转义了/个字符),第一次匹配:

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

但是,正则表达式可能不是最好的方法;查看是否有任何方法可以通过其他方式传递基本URL,例如通过页面后面运行的代码。

如果已知“someother”是站点的根,则替换

    \w([yx]/)

(请注意,此处转义了/个字符),第一次匹配:

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

但是,正则表达式可能不是最好的方法;查看是否有任何方法可以通过其他方式传递基本URL,例如通过页面后面运行的代码。

请尝试以下regexp:

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

请尝试以下regexp:

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

这个应该做得很好

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

这个应该做得很好

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

也许是这样的

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/ 

大概是这样的吧

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/ 

上,当您说“基本url”时,您是指在HTML中使用
元素指定的url吗?不,是所有环境的通用路径当您说“基本url”时,您是指在HTML中使用
元素指定的url吗?不,所有环境的公共路径这不适用于从站点根目录或两个或多个子文件夹下运行的情况。@AdrianWragg what?你的评论毫无意义。你能给我一个真实的例子,说明你的答案会成功,而我的答案会失败吗?或者@AdrianWragg:对,我明白你的意思。。。但OP的情况并非如此。就他给出的例子而言,这个答案比基于正则表达式的解决方案要清楚得多,那么这真的值得否决吗,还是你有点过于热心?我觉得这在他的问题中没有用处。可能是我太热心了;“我的下一票”已锁定,但如果您想稍微编辑您的答案,我应该可以将其删除。这不适合从网站根目录或两个或多个子文件夹下运行的情况。@AdrianWragg what?你的评论毫无意义。你能给我一个真实的例子,说明你的答案会成功,而我的答案会失败吗?或者@AdrianWragg:对,我明白你的意思。。。但OP的情况并非如此。就他给出的例子而言,这个答案比基于正则表达式的解决方案要清楚得多,那么这真的值得否决吗,还是你有点过于热心?我觉得这在他的问题中没有用处。可能是我太热心了;我的否决票被锁定,但如果你想稍微编辑你的答案,我应该能够删除它。