Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS Regex替换文件名中的版本号_Javascript_Regex_Gulp - Fatal编程技术网

Javascript JS Regex替换文件名中的版本号

Javascript JS Regex替换文件名中的版本号,javascript,regex,gulp,Javascript,Regex,Gulp,从字符串css/main.min-1.2.0.css开始,我尝试在每次发布版本时使用Gulp动态替换HTML中的版本号 下面的正则表达式与版本号匹配,但是我需要将版本号与前面的字符串匹配,以确保更新正确的版本号 /\b\d+(?:\。\d+*\b/ 正则表达式应该理想地匹配这个起始字符串和文件扩展名,并替换版本号1.0.0 css/main.min-1.0.0.css 编辑 接下来,我在苦苦思索为什么下面的内容会失败,它似乎与双引号有关 var字符串=“”; string.replace(/cs

从字符串
css/main.min-1.2.0.css
开始,我尝试在每次发布版本时使用Gulp动态替换HTML中的版本号

下面的正则表达式与版本号匹配,但是我需要将版本号与前面的字符串匹配,以确保更新正确的版本号

/\b\d+(?:\。\d+*\b/

正则表达式应该理想地匹配这个起始字符串和文件扩展名,并替换版本号
1.0.0

css/main.min-1.0.0.css

编辑

接下来,我在苦苦思索为什么下面的内容会失败,它似乎与双引号有关

var字符串=“”;
string.replace(/css\/main[.]min-(?:\d[.]?)+css$/g,'css/main.min-1.1.1.css');

多亏了@Guedes在评论中的作用,现在答案如下,取代了整个内容,而不仅仅是版本控制

replace(/css\/main[.]min-(?:\d[.]?)+css$/g, 'css/main.min-' + pkg.version + '.css')
编辑

下面已解决,示例为供其他人使用的吞咽任务

gulp.task('versioned-path',function(){
gulp.src(['public/***/.html','public/***/.php']))
.pipe(替换(/css\/main\.min-(?:\d\.\d)\.css/g,'css/main.min-'+pkg.version+'.css'))
.pipe(替换(/js\/env\.min-(?:\d\.\d\.\d)\.js/g,'js/env.min-'+pkg.version+'.js'))
.pipe(替换(/js\/main\.min-(?:\d\.\d)\.js/g,'js/main.min-'+pkg.version+'.js'))
.pipe(大口目的地('public/');
});
试试这个:

var字符串=[
“css/main.min-1.0.0.css”,
“css/main.min-11.22.33.css”,
'css/main1.min-1.0.0.css'
];
var matchPattern=/^css\/main\.min-\d+\.\d+\.\d+\.css$/;
var replaceString='css\/main\.min-2.3.4.css';
forEach(函数(字符串){
if(匹配模式测试(字符串)){
console.log(字符串+“->匹配”);
finalVersion=string.replace(匹配模式,replaceString);
console.log(最终版本+“替换后”)
}
否则{
console.log(字符串+“->不匹配”);
}

});就在不远处!谢谢,我忘了提到的主要内容是一个HTML元素,而不仅仅是一个文本字符串!