2012-03-22 5 views
1

a.jpg 및 b.jpg로 끝나는 이미지를 c.jpg로 바꾸고 싶습니다.Jquery가 정규 표현식을 사용하여 바꿉니다.

$(".test").each(function() {    
    var src = $(this).attr("src"){ 
    if(src.match(/a.jpg$/)){ 
     src.replace("a.jpg", "c.jpg"); 
    } else if (src.match(/b.jpg$/)){ 
     src.replace("b.jpg", "c.jpg"); 
    } 
    $(this).attr("src", src);  
}); 

을하지만이 복잡 내가이 사용하는 정규식을 할 수있는 방법 .. 다음과 같이

내 코드는?

답변

6

당신은 패턴이 일치하는 경우 만 수행 확인할 필요하지 않은 대체 :

you'r는 src 속성의 끝을 교체하고 확장자가 포함되어 있기 때문에
$(".test").each(function() { 
    $(this).attr("src", $(this).attr('src').replace(/[ab]\.jpg$/, "c.jpg"); 
}); 
1

,이 말을 안전 (a | b) .jpg 하위 문자열은 한 번만 나타납니다. 즉, $(this).attr('src').replace('a.jpg','c.jpg').replace('b.jpg','c.jpg')은 Tatu의 답변과 정확히 일치 할 것입니다. 정규식은 없습니다.

제발, 이걸 읽는 사람에게 제발, 문자열을 조작 할 때는 기본적으로 정규 표현식을 사용하지 말고 두 번 생각하십시오. 아마도 SO에 대한 정규식 관련 질문의 85 %는 대체 정규식이없는 (그리고 대부분의 경우 더 나은) 해결책이 가능한 경우입니다.

+0

아니요, 예.'a.jpg.fail.gif '. – Qtax

+0

substr (0, $ (this) .attr ('src'). 길이 -5) + $ (this) .attr ('src')) .substr (-5) .replace (...'등) 콘솔'substr (0, test.length-5) + test.substr (-5) .replace ('a.jpg', 'c. jpg '). replace ('b.jpg ','c.jpg ')는 예상대로 작동합니다. –

관련 문제