js正则 replace 反向引用的问题。

目前在配置node express 的 url rewrite

Before the URL gets to Express' static middleware, we need to rewrite the URL. 参考

var app = express();
// Rewrite the URL before it gets to Express' static middleware. 
app.use('/public/', function(req, res, next) {
        req.url = req.url.replace(/\/([^\/]+)\.[0-9a-f]+\.(css|js|jpg|png|gif|svg)$/, "/$1.$2");
        next();
});
app.use('/public/', express['static'](__dirname + '/public', { maxAge: 30 }));
//现在想把 :

var url = 'http://localhost:8080/newcss/act/act1/index.html/aaa';          //替换为:
          'http://localhost:8080/newcss/act/act1/index.html';
          
> url.replace(/(\/newcss\/.+?index.html)/,"$1");
> "http://localhost:8080/newcss/act/act1/index.html/aaa"          //不生效

//我们来看下match的

url.match(/(\/newcss\/.+?index.html)/)
>[ "/newcss/act/act1/index.html",
   "/newcss/act/act1/index.html",          //$1
   index: 21,
   input: "http://localhost:8080/newcss/act/act1/index.html/aaa"
 ]


//match的结果完全正常,而且 $1 就是我们想要的,但是为什么就replace不行了呢?????



//我在replace后再加一个括号匹配剩下的url就正常了。如下:

> url.replace(/(\/newcss\/.+?index.html)(.*)?/,"$1")
> "http://localhost:8080/newcss/act/act1/index.html"



原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏iOS开发攻城狮的集散地

堆和栈

1715
来自专栏精讲JAVA

TCP的长连接与短连接的含义与区别(附Java代码实现)

关于连接 TCP/IP通信方式分为连接与非连接型通讯方式 TCP:TCP是一种可靠通信,每次通信需要建立一个专门的通信链路 UDP:UDP通信是一种无连接方式,...

3.9K7
来自专栏Jimoer

JVM学习记录-线程安全与锁优化(一)

线程:程序流执行的最小单元。线程是比进程更轻量级的调度执行单位,线程的引入,可以把一个进程的资源分配和执行调度分开,各个线程既可以共享进程资源(内存地址、文件I...

702
来自专栏我是攻城师

解读Java阻塞队列BlockingQueue的实现

上篇文章我们介绍了队列的基类接口Queue它定义了所有实现队列的类必须拥有的方法行为而BlockingQueue阻塞队列接口继承了Queue接口,此外Block...

9842
来自专栏Coding01

看 Laravel 源代码了解 Container

自从上文《看 Laravel 源代码了解 ServiceProvider 的加载》,我们知道 Application (or Container) 充当 Lar...

2955
来自专栏数据之美

shell 学习笔记(17)

声明:转载需署名出处,严禁用于商业用途! 1601.关于rsync相同文件后 du 大小不一样的问题: 不一样大小很正常,因为文件系统的block...

2858
来自专栏技术博客

Asp.Net Web API 2第十四课——Content Negotiation(内容协商)

阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.h...

871
来自专栏机器学习从入门到成神

各大公司Java后端开发面试题总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_35512245/articl...

2632
来自专栏青玉伏案

iOS开发之Alamofire源码解析

今天博客中的Alamofire源码的版本是以3.4版本为例。上篇博客系统的对NSURLSession相关的东西进行了详细的解析,详情请看《详解NSURLSess...

2837
来自专栏微信公众号:Java团长

各大公司Java后端开发面试题总结

ThreadLocal(线程变量副本) Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量。 采用空间换时间,它用于线程间的...

1121

扫码关注云+社区