2015-01-23 3 views
1

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을 당신이 정규식 사용할 수 있습니다

+0

왜 첫 번째 문자열이 일치하지 않아야합니까? 또한 jsbin 링크가 작동하지 않습니다. – kittykittybangbang

+0

regex를이''\/main \ .min \ .js "+"(\\? [0-9a-z] +)? "'로 변경하여'/'를 바로 찾으십시오. 'main' – imtheman

+0

js에서 슬래시 (/)를 벗어나야 할 필요가 있다고 생각하지 않습니다. (문제가되지 않는다면)'.replace (new RegExp ("/ main \ .min \ .js" + "(\\? [0-9a-z] +)?", "g"), "/main.78765.min.js");하지만 그가 묻는 것이 확실하지는 않습니다. – NorthGuard

답변

1

모든 조건 :

var re = new RegExp("(^|/)main\.min\.js" + "(\\?[0-9a-z]+)?", "g"); 

var ans1 = str1.replace(re, '$1main.78765.min.js'); // bbb/mobile-main.min.js 
var ans2 = str2.replace(re, '$1main.78765.min.js'); // ttt/main.78765.min.js 

JSBin Demo

(^|/) 패턴 main\.min\.js이 시작시 또는 / 앞에있을 때만 바뀝니다.

+0

고마워,이 가까이 있지만 내가 정확히 무엇을 필요로 반대 (일치 및 두 번째 교체해야합니다. 또한 내 경우에 일치하는 파일 이름 접두사가없는 경우 일치해야합니다. BTW : 나는 그것에 대해 몇 가지 설명을하고 싶다. 나는 정규식 기술을 익히려고 노력하고있다. ( –

+0

내 질문 + JSBin을 업데이트했다.) tnx –

+0

예 대답과 데모 링크를 업데이트했다. – anubhava

관련 문제