2014-08-31 3 views
0

div 콘텐츠에서 @ (\ w +)과 (과) 일치 시키려고합니다.자바 스크립트에서 @ ( w +)를 대체하고 바꿉니다.

다음은 내가 시도한 내용입니다 : http://jsfiddle.net/mxgde6m7/1/.

@ (\ w +)는 작동하지만 공간으로 바뀌지는 않습니다.

var content = document.getElementById('contentbox'); 
    var find = '@(\w+)'; 
    var reg = new RegExp(find, 'g'); 
    var result = content.innerHTML.replace(reg, ' '); 
    alert(result); 

<div id="contentbox">@d <a href="#" id="5">test </a> 

내가 원하는 무엇 : 사전에 <div id="contentbox"><a href="#" id="5">test </a> </div>

감사합니다.

편집

좋아, 한 가지 문제 해결, 또 다른 하나를 내놓았다. 내 스크립트 http://jsfiddle.net/mxgde6m7/9/은 완벽하게 작동하지만 내 웹 사이트에서 시도하면 절반 만 작동합니다. @ (\ w +)를 공백으로 대체해야하는 마지막 부분은 전혀 작동하지 않습니다. 내가 복사/붙여 넣기 콘솔 (크롬) 함수의 내용을 붙여 넣으면 작동하지만, 나는 함수를 붙여 그것을 호출하는 경우 작동하지 않습니다.

도와주세요! 나는 붙어있다.

+0

\ 012 대신 @ –

+0

Pfff .... 감사합니다. – nikodemus

+0

문자열이 포함되지 않도록 [regex literal] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions)을 사용할 수도 있습니다. - var reg =/@ (\ w +)/g;' –

답변

1

RegExp 생성자를 사용하면 각 백 슬래시 \ 대신 두 개의 백 슬래시 \\이 필요합니다.

var find = '@(\\w+)'; 
+0

또한 감사합니다. – nikodemus

0

hwnd 정규식에서 \ w를 두 번 이스케이프해야합니다.

var find = '@(\\w+)'; 

그러나, 당신은 또한 이렇게 같은 regex literal을 정의하여이 코드를 훨씬 청소기 만들 수 있습니다 - 그것은 문자열이 아니다으로

var content = document.getElementById('contentbox'); 
var result = content.innerHTML.replace(/@(\w+)/g, ' '); 
alert(result); 

이런 식으로 이렇게는 이중 이스케이프를 필요로하지 않습니다.

관련 문제