2012-03-15 4 views
0

이 Regex ([a-zA-Z0-9]?(?:http[s]?://)?(?:(?:\w+)\.)(?:\S+)(?:\.(?:\w+))+?) 문자열 내에서 http://www.msn.com 또는 www.msn.com 또는 msdn.microsoft.com 또는 http://msdn.microsoft.com 발생을 성공적으로 찾습니다. 그러나 두 개의 대체 알고리즘이 필요합니다.이 알고리즘은 <a href=\"$1\" target=\"_blank\" onclick=\"preventDualEditing(event)\">$1</a>이고이 하나는 <a href=\"http://$1\" target=\"_blank\" onclick=\"preventDualEditing(event)\">$1</a>입니다. 차이점은 www.msn.com과 같은 링크에 필요한 http:// 문자열 앞에 붙는 것입니다.조건부 대체

하지만, 무엇 일어나고있는 것은 발견 된 첫 번째 occurance가 http://www.msn.com하고 그래서 여러 번 그것을 대체하는 www.msn.com를 교체하려고하면 내가 때문에 일을 엉망으로되어있는 대체 문을 사용하여 루프 - 그것은이를 발견 한 번 경우는 이미 http://으로 연결하고 www.msn.com을 발견하면 한 번 연결하십시오.

필요하다면 조건부로 http://을 문자열에 추가하는 한 번에 패스 대체 방법이 있습니까? 이와

+1

$2을 사용할 수 있습니까? 너를 위해서? 언제 "http : //"앞에 무언가를 잡아야합니까? "http : //"다음에 모든 것을 캡처 한 다음 항상 GetSet

+0

내가 할 수 있었던 것은이 문자열 ('www.msn.com)에서 괄호를 픽업하지 않도록하는 것입니다. –

답변

4

시도 :

([a-zA-Z0-9]?http[s]?://)?((?:(?:\w+)\.)(?:\S+)(?:\.(?:\w+))+?) 

하고 대신 $1 최초의 [A-ZA-Z0-9]을 무엇

+1

만약 내가 당신에게 1000 번 upvote 수 - 좋은 생각 내 친구! –