regex replace 문으로 문제를 해결하려고합니다.정규식이 원하지 않는 문자열과 일치합니다
var str1 = "bbb/mobile-main.min.js";
var str2 = "ttt/main.min.js";
var str21 = "mobile-main.min.js";
var str22 = "main.min.js";
var re = new RegExp("main\.min\.js" + "(\\?[0-9a-z]+)?", "g");
var ans1 = str1.replace(re, '$1main.78765.min.js');
var ans2 = str2.replace(re, '$1main.78765.min.js');
var ans21 = str21.replace(re, '$1main.78765.min.js');
var ans22 = str22.replace(re, '$1main.78765.min.js');
console.log("ans1: "+ ans1);
console.log("ans2: "+ ans2);
console.log("ans21: "+ ans21);
console.log("ans22: "+ ans22);
결과는 다음과 같습니다 :
여기"bbb/mobile-main.min.js"
"ttt/main.78765.min.js"
"mobile-main.min.js"
"main.78765.min.js"
이 jsbin하는 link입니다 :
"ans1: bbb/mobile-main.78765.min.js"
"ans2: ttt/main.78765.min.js"
"ans21: mobile-main.78765.min.js"
"ans22: main.78765.min.js"
내 원하는 결과가 일치 할 경우에만 두 번째 문자열 (STR2)는이 코드입니다
목표에 맞는 정규 표현식을 찾을 수 없습니다. 고마워!
편집 : Jsbin 링크가 고정되어 있습니다.
또 다른 제한 사항 : 나는 항상 파일 이름의 infront가없는 것은 아닙니다. 이것은 비슷한 결과가 있어야합니다 (만 두 번째 일치해야합니다) :
mobile-main.min.js
mail.min.js
Edit2가 에게 편집 코드 + JSBin을 당신이 정규식 사용할 수 있습니다
왜 첫 번째 문자열이 일치하지 않아야합니까? 또한 jsbin 링크가 작동하지 않습니다. – kittykittybangbang
regex를이''\/main \ .min \ .js "+"(\\? [0-9a-z] +)? "'로 변경하여'/'를 바로 찾으십시오. 'main' – imtheman
js에서 슬래시 (/)를 벗어나야 할 필요가 있다고 생각하지 않습니다. (문제가되지 않는다면)'.replace (new RegExp ("/ main \ .min \ .js" + "(\\? [0-9a-z] +)?", "g"), "/main.78765.min.js");하지만 그가 묻는 것이 확실하지는 않습니다. – NorthGuard