2013-10-03 3 views
1

나의 현재 코드는 다음과 같다 :@geion을 대체하려고 할 때 정규 표현식이 작동하지 않는 이유는 무엇입니까?

var regex = '@([a-z0-9_]+)'; 
replacedText = replacedText.replace(regex, '<a href="http://blah.com/$1">$1</a>'); 

그러나, 같은 나는 문장을 입력 할 때 '안녕하세요이 @Test입니다!' 그것은 아무것도 변경하지 않고 일반 텍스트로 표시됩니다.

왜 이런 일이 발생합니까?

+3

또한 대문자를 지원하기 위해'A-Z'를 추가 할 것입니다. – ComFreek

답변

5

regex을 문자열로 생성했기 때문입니다. 문자열 replace을 전달할 때 정규 표현식처럼 취급하지 않습니다. 대체 할 문자열의 리터럴 항목을 찾습니다.

대신 문자 정규 표현식 사용

var regex = /@([a-z0-9_]+)/; 
replacedText = replacedText.replace(regex, '<a href="http://blah.com/$1">$1</a>'); 

을 또는 RegExp 생성자 호출 :

var regex = new RegExp('@([a-z0-9_]+)'); 
replacedText = replacedText.replace(regex, '<a href="http://blah.com/$1">$1</a>'); 
다음

작업 demonstration의를.

+0

감사하지만 여전히 불행히도 나를 위해 작동하지 않습니다. 텍스트가 대체되지 않습니다. –

+0

@ JamesAnderson585 작업 데모를 포함 시켰습니다. 내 업데이트 답변을 참조하십시오. –

관련 문제