gpt4 book ai didi

javascript - 在 url 的路径部分之后插入 ".js"的最干净的方法?

转载 作者:搜寻专家 更新时间:2023-11-01 04:51:42 25 4
gpt4 key购买 nike

我有一个 url变量,我想在其中插入 ".js"在路径部分之后,除非有 ".<something>"已经在路径之后了。

因此,这里有一个“硬编码”数组,其中包含每个起始值和预期结束值,这有望很好地说明问题:

var url_pairs = [
["http://example.com/foo", "http://example.com/foo.js"],
["http://example.com/foo/bars", "http://example.com/foo/bars.js"],
["http://example.com/foo/bars?quz=baz", "http://example.com/foo/bars.js?quz=baz"],
["http://example.com/foo/bars?quz=baz&qix=bax", "http://example.com/foo/bars.js?quz=baz&qix=bax"],
["/foo", "/foo.js"],
["/foo/bars", "/foo/bars.js"],
["/foo/bars?quz=baz", "/foo/bars.js?quz=baz"],
["/foo/bars?quz=baz&qix=bax", "/foo/bars.js?quz=baz&qix=bax"],
["/foo/bars.js?quz=baz&qix=bax", "/foo/bars.js?quz=baz&qix=bax"],
["/foo/bars.xml?quz=baz&qix=bax", "/foo/bars.xml?quz=baz&qix=bax"]
]

我正在努力想出一种简洁快速的方法来执行此操作,但我确信可以干净、简单地完成此操作,例如使用正则表达式。任何人都可以让我直截了当吗?谢谢,麦克斯

编辑:测试解决方案 - 这是我为测试它而编写的片段。

function convertUrl(oldUrl){
//insert code to convert oldUrl and return the result
}

$.each(url_pairs, function(i,pair){
var oldUrl = pair[0];
var expected = pair[1];
var newUrl = convertUrl(oldUrl);
if(newUrl != expected){
console.log("expected \""+expected+"\", but got \""+newUrl+"\"");
}
});

最佳答案

这里有一个简单的正则表达式可以做到这一点:

(\/[a-z]+)(\?[a-z=&]+)?$

无需做任何检查;这会捕获没有现有文件扩展名的 URL。像这样使用:

var string = "http://example.com/foo/bars?quz=baz&qix=bax";
console.log(string.replace(/(\/[a-z]+)(\?[a-z=&]+)?$/, "$1.js$2"));
// http://example.com/foo/bars.js?quz=baz&qix=bax

编辑:按照评论中的要求,以下更新的正则表达式接受路径中的下划线和数字:

(\/[a-z_]+)(\?[0-9a-z_=&]+)?$

它在您提供的所有 URL 上运行:

var urls = ["http://example.com/foo",
"http://example.com/foo/bars",
"http://example.com/foo/bars?quz=baz",
"http://example.com/foo/bars?quz=baz&qix=bax",
"/foo",
"foo/bars",
"/foo/bars?quz=baz",
"/foo/bars?quz=baz&qix=bax",
"/foo/bars.js?quz=baz&qix=bax",
"/foo/bars.xml?quz=baz&qix=bax",
"http://example.com/my_music_world_classes/edit_pupil?id=10199&pupil_id=157721"];
console.log(urls.map(function (url) {
return url.replace(/(\/[a-z_]+)(\?[0-9a-z_=&]+)?$/, "$1.js$2");
}));

关于javascript - 在 url 的路径部分之后插入 ".js"的最干净的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32476591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com