2009-08-20 2 views
1

AIR 응용 프로그램에서 JSON을 통해 임의의 텍스트를로드하고 객체로로드 한 다음 사용자 정의 렌더러를 통해 표시합니다. URL을 클릭 할 수있게하고 싶습니다. 그래서 이것은 어떤 미친 정규식 일 (PHP는 here에 대한 발견)을 통해 가능하다고 확신하지만, 플렉스 플렉스, 나는 거기에 몇 가지 기본 기능을 내가 찾지 못했 놀랐어 , 또는 실패하고, 누군가가 이것을 위해 만든 도서관.as3 Flex에서 텍스트를 클릭하여 URL을 만들 수 있습니다.

그 실패

(나는이 질문이 여기에 요청되지 않은 전에. 내가 그 링크와 골조 될 것으로 예상되는 것을 똑같이 놀라게 해요), 사람이 어떤 미친 정규식에 도움을 줄까? ;>

미리 감사드립니다.

답변

3

다음과 같은 정규식 사용하여 실제 링크 텍스트의 URL 대체 할 수 있습니다 :

<mx:Text htmlText="{str}" link="linkHandler(event)"/> 
:

str = str.replace(/((https?|ftp|telnet|file):((\/\/)|(\\\\))+[\w\d:#@%\/;$()~_?\+-=\\\.&]*)/g, "<u><a href='$1'>$1</a></u>"); 

는 그 다음 Label 또는 Text 구성 요소에서의 htmlText를 설정하고 수신은 link 이벤트입니다

다음 핸들러에서 URL을 엽니 다.

public function linkHandler(event:TextEvent):void { 
    navigateToURL(new URLRequest(event.text), '_blank'); 
} 

그 정규식을 제외하고이 코드를 테스트하지는 않았지만 제대로 작동합니다. 또한 this이 도움이 될 수 있습니다.

+0

안녕하세요, 감사합니다. 나는이 프로젝트를 잠시 놓았으므로이 탭으로 돌아 오지 않아 적시에 고맙다. 그것을 시도하고 그것이 어떻게되는지보십시오. 나를 위해 미친 정규식을 이해해 주셔서 감사합니다! –

+0

그게 실제로 내 코드에서 내가 가진 문제 였고 나는이 방법으로 문제를 해결했다. :) – leolobato

2

나는 다음과 같은 정규식 훨씬 더 유용한 URL의 유효성을 검사 할 수 있음을 추가하고 싶습니다 :

/(((f|ht){1}tp:\/)[[email protected]:%_\+.~#?&\/=]+)/g

+0

멋진. 이 정규 표현식을 다른 것보다 선호하는 이유를 설명해 주시겠습니까? (나는 그것을 도전하지 않는다. 나는 단지 호기심이다.) = 이해할 수없는 한 가지는 {1}이 필요한 이유이다. "한 가지만 일치"가 기본값이 아닌가? – PEZ

관련 문제