2011-09-29 4 views
3

URL과 일치하는 다음 JavaScript가 HTML 링크로 바뀌 었습니다. 그러나 .png | .jpg | .jpeg | .gif로 끝나는 URL을 제외해야합니다.이미지 확장이 아닌 Javascript 정규식 URL

text = text.replace(
      /(\b(?:https?|ftp):\/\/[a-z0-9-+&@#\/%?=~_|!:,.;]*[a-z0-9-+&@#\/%=~_|])/gim, 
      '<a href="$1" class="autolink" target="_blank">$1</a>' 
     ); 

답변

4

당신은 단지에 시험 전에 수 : 여러 교체해야 할 경우

if (!text.match(/\.(png|jpg|jpeg|gif)$/) { 
    text = text.replace(
      /(\b(?:https?|ftp):\/\/[a-z0-9-+&@#\/%?=~_|!:,.;]*[a-z0-9-+&@#\/%=~_|])/gim, 
      '<a href="$1" class="autolink" target="_blank">$1</a>' 
     ); 
} 

은, 당신은 이미지 엔딩의 경기를 확인하고 그에 따라 작동 기능을 대체 지정을 사용할 수 있습니다. 즉 다음과 같이 작동합니다 :

var imageRegex = /\.(png|jpg|jpeg|gif)$/; 
text = text.replace(/(\b(?:https?|ftp):\/\/[a-z0-9-+&@#\/%?=~_|!:,.;]*[a-z0-9-+&@#\/%=~_|])/gim, 
    function(str) { 
     if (str.match(imageRegex)) { 
      return(str); 
     } else { 
      return('<a href="' + str + '" class="autolink" target="_blank">' + str + '</a>'); 
     } 
    }); 
+0

하나를 대답이 같은 그러나 내 입력 문자열에서 많은 URL이 할 수있는 단일 URL로 입력을 위해 일하는 것이 정규식 더 복잡한 – justintime

+0

감사합니다을하지 않는. 고마워요 ayway –

+0

일치하는 문자열을 검사하여 이미지 정규 표현식과 비교 한 다음 혼자 남겨 둘지 (자체로 바꾸기) 또는 링크할지 여부를 결정하는 사용자 지정 대체 함수를 사용할 수 있습니다. 이것이 코드를 링크하는 범용 목적이고, 링크를 피하려고 시도하는 경우에는 (