首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用正则表达式更新有路径和无路径的图像

如何使用正则表达式更新有路径和无路径的图像
EN

Stack Overflow用户
提问于 2015-08-15 01:02:19
回答 1查看 70关注 0票数 0

计划是用到CDN的路径来更新路径,以及那些缺少路径的路径。基本示例:

代码语言:javascript
复制
var thePath = 'http://media.dev.com.edgesuite.net/is/image/';

...
return value.replace( /[\/]|[\.\w\/].*[\/]/gm, thePath );

但问题是,有些人没有路径..。

代码语言:javascript
复制
(/images/bird.gif) has the path of /images/
(/gator.gif) has the path of /
(bird.gif) lacks a path

我很难瞄准那些没有路径的人。运行中的正则表达式可以在http://www.regexr.com/3bj6g上看到。

为了提供更多上下文,这里是脚本...

代码语言:javascript
复制
var scene7 = {
  path  : 'http://media.dev.com.edgesuite.net/is/image/',
  jpg   : '?scl=1&fmt=pjpeg&qlt=25,1',
  gif   : '?scl=1&fmt=gif-alpha&quantize=adaptive,off,256',
  png   : '?scl=1&fmt=png-alpha'
};    

var destAssetsDesktopStandard = {
  html    : basePath.desktopStandard + ''
};

////////////////////////////////////////////////

function replaceImageType( value ) {

console.log(value);

    return value.replace( /[\/]|[\.\w\/].*[\/]/gm, scene7.path )
                .replace( '.jpg', scene7.jpg )
                .replace( '.jpeg', scene7.jpg )
                .replace( '.png', scene7.png )
                .replace( '.gif', scene7.gif );

}

var findImagesInCSS   = '\\(([\\.\\~\\"\\s\\\'\\-\\w\\/]+(\\.(png|jpg|jpeg|gif))).*?\\)';
var replaceWithRegExp = new RegExp(findImagesInCSS, 'gm');

////////////////////////////////////////////////

gulp.task('inline-code', function(){

  var optionsIgnoreScript = { ignore: ['script'] };
  var optionsIgnoreCSS    = { ignore: ['css'] };

  return gulp.src('index.asp')
    .pipe(inlinesource(optionsIgnoreScript))
    .pipe(replace( replaceWithRegExp, replaceImageType ))
    .pipe(inlinesource(optionsIgnoreCSS))
    .pipe(gulp.dest(destAssetsDesktopStandard.html));
});

gulp.task('build-desktop-standard', ['inline-code']);

你将如何处理这个问题?

EN

回答 1

Stack Overflow用户

发布于 2015-08-15 01:12:12

如果没有什么可以替换的,不要使用正则表达式替换:

代码语言:javascript
复制
if (value.indexOf("/") == -1)
    value = scene7.path;
else
    value = value.replace( /[\/]|[\.\w\/].*[\/]/gm, scene7.path );
return value.replace('.jpg' ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32015238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档