使用javascript我需要替换文档中的匹配字符串

时间:2015-07-06 01:51:04

标签: javascript regex node.js express str-replace

使用javascript我需要将文档中的某些网址重命名为文件名。

Router.route('/photos')
    .get(function(req, res){

        models.PHOTOS.find({}, function(err, photos){
            if (err) {
                res.status(500).send(err);
            }
            else {
                var input = JSON.stringify(photos);
                var output = input.replace('http://www.someurl.com/media.ashx?id=', '').replace('&t=pi&f=I', '.jpg');
                res.json(JSON.parse(output));
            }
        });
    });

所以从http://www.someurl.com/media.ashx?id=FILE123456&t=pi&f=I我应该获得FILE123456.jpg

但它仅为第一个匹配的字符串更改它,我想为整个文档执行此操作。

1 个答案:

答案 0 :(得分:1)

使用正则表达式和全局,/g,有点像

var output = input.replace(/http\:\/\/www\.someurl\.com\/media\.ashx\?id=/g, '').replace(/&t=pi&f=I/g, '.jpg');

编辑:你知道什么,更清洁的方法可能是这样 (假设结构为照片对象的数组,其中url为属性):

Router.route('/photos')
    .get(function(req, res){

        models.PHOTOS.find({}, function(err, photos){
            if (err) {
                res.status(500).send(err);
            }
            else {
                photos.forEach(function(photo){
                    photo.name = photo.url.replace(/http\:\/\/www\.someurl\.com\/media\.ashx\?id=/, '').replace(/&t=pi&f=I/, '.jpg');
                });
                res.json(photos);
            }
        });
    });