2016-08-11 3 views
0

정규식을 사용하여 이미지, 비디오 및 다른 URL을 메시지로 대체하려고합니다. 모든 것이 제대로 작동한다고 생각했지만 www.google.com과 같은 URL을 대체하는 마지막 사례에 문제가 있습니다. 이제 해당 URL 앞에 localhost : 3000을 추가합니다. 나는 정규 표현식으로는 최고가 아니지만 href가 www.google.com이므로 정규 표현식이 HTML에서 작동하는 것처럼 보입니다. 아무도 이것이 잘못되어가는 것을 볼 수 있습니까?자바 정규식 URL 바꾸기

var image_url = /([a-z\-_0-9\/\:\.]*\.(jpg|jpeg|png|gif))/i; 
var message = text.replace(image_url,'<a href="$1" target="_blank"><img width=100px height=100px src="$1"/></a>') 
var video_url = /([a-z\-_0-9\/\:\.]*\.(mp4|webm|ogg))/i; 
message = message.replace(video_url,'<a href="$1" target="_blank"><video src="$1"></video></a>') 
var exp_url = /(?:^|[^"'])(https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})/gi; 
message = message.replace(exp_url,'<a href="$1" target="_blank">$1</a>') 
+0

코드를 조금 더 게시 할 수 있습니까? 특히 '텍스트'변수의 가치는 무엇입니까? –

+0

텍스트는 사용자가 보낸 메시지이므로 아무 것도 될 수 있습니다. 이 기능은 이미지, 비디오 또는 URL인지 확인하고 올바른 태그로 바꾸는 작업입니다. 첫 번째 두 개는 올바르게 작동하지만 마지막 노드는 localhost : 3000을 앞에 추가하려고합니다. –

+0

마지막 문제 만있는 경우 문제를 해결할 수 있습니까? 우리가 작업중인 코드의 부분을 볼 필요는없는 것 같습니다. – trincot

답변

1

알아낼 수있었습니다. http : //를 추가하지 않았습니다.

var image_url = /([a-z\-_0-9\/\:\.]*\.(jpg|jpeg|png|gif))/i; 
var message = text.replace(image_url,'<a href="$1" target="_blank"><img width=100px height=100px src="$1"/></a>') 
var video_url = /([a-z\-_0-9\/\:\.]*\.(mp4|webm|ogg))/i; 
message = message.replace(video_url,'<a href="$1" target="_blank"><video src="$1"></video></a>') 
var http_reg = /(?:^|[^"'])(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim; 
message = message.replace(http_reg, '<a href="$1" target="_blank">$1</a>'); 
var www_reg = /(?:^|[^"'])(^|[^\/])(www\.[\S]+(\b|$))/gim; 
message = message.replace(www_reg, '$1<a href="http://$2" target="_blank">$2</a>');