2011-03-21 3 views
0

저는 자바 스크립트와 클래식 ASP로 작업 중이며,이 정규 표현식으로 나를 도울 수 있기를 바랍니다.Regex는 아포스트로피 사이의 모든 qout를 바꿉니다.

나는 (따옴표) 정규식에 아포스트로피의 사이

"

를 교체해야합니다.

나는이 라인에 생각했다, 그러나 이것은 전체 문자열을 대체합니다 견적과 함께

textarea = textarea.replace(/\'.*?\'/ig, '&quote;'); 

,단일 정규식이 작업을 수행하고있을 수없는 내가, 그것은

'this is the text "&quote;click here&quote;' 

내가 어떤 몸이 참고

감사

답변

1

먼저 각 경기 내에서 모든 따옴표를 대체 할 다음 첫 경기 /'([^\']+)'/ 필요하고,이 작업을 수행합니다. 그런 다음 대체 방법으로 두 번째를 표현하기 위해, $2를 첫 번째 캡처 그룹을 대표하는 $1을 사용할 수있는 등 그래서, 다른 말로하면, 당신은 할 것 :

textarea.innerHTML = textarea.innerHTML 
          .replace(/'(.*?)"(.*?)"(.*?)'/g, 
             "'$1&quote;$2&quote;$3'"); 

을 당신이 "를 대체하고 싶었 가정 단어 & 견적, 아닌 문자 & quot ;,하지만 당신은 쉽게이 필요한 경우 대체 할 수

Here's a working example →

+0

좋은 예 - 도구가 마음에 든다 ... –

+0

<텍스트 바 id = "textarea"> "대체하고 싶지 않다", 단어 단어 '여기는 텍스트입니다.' 예를 들면 이것은 무엇입니까? 결과는

+0

예와 코드가 수정되어 업데이트되었습니다. – mVChr

0

도움을 줄 수있을 필요가 절대 안전한합니다. 이유는 정규식 상태를 추적 할 수없는, 그래서 전체 문자열이

'"test"' "test" '"test"' 

같은 경우 대체해서는 안 정규식 test 인용 2를 알 수있는 방법이 없습니다.

당신은 당신이 주위 ()을 넣어 당신의 .*? 캡처 그룹으로 전환 할 필요가 .replace/(\"/g, '&quot;')

+0

나는 모든 인용문이 'this is the text is here' '어포 스트로피의 –

+0

사이에 있다는 것을 100 % 확신한다. 실제로, 나는 그것이 완전히 정확하다고 생각하지 않는다. 정규 표현식을 사용하여 작은 따옴표로 묶은 문자열과 일치 시키면 첫 번째 문자열과 세 번째 문자열을 검사합니다 - 두 번째 문자열의 시작 부분이 첫 번째 문자열의 일부이기 때문에 일치하지 않습니다 (남자, 그것은 하나의 복잡한 설명입니다 !). – Czechnology

+0

나는 mysql insert statemet을 쓰고 있는데, 따옴표 outsite는 내가 바꾸고 싶지 않은 문자열이다 ... 나는 단지 '(두 개의 apostophe 's) 사이에있는 것들을 바꿔주고 싶다. ... –

0

예, 하나 이상의 정규식이 필요합니다 당신이 원하지 않는 가정.. 이스케이프 된 따옴표를 처리하기 위해 테스트 된 f 테스트 데이터에 기름 부음 작품 : 당신은 탈출 따옴표를 가진 문자열을 처리해야하는 경우

function process_data(text) 
{ // Convert double quotes to HTML entity inside single quoted strings. 
    var re_dsq = /("[^"]*")|('[^']*')/g; // $1 = "string" or $2 = 'string' 
    var re_dq = /"/g;      // A single " 
    text = text.replace(re_dsq, function(m0, m1, m2) { 
       if (m1) return m1; 
       return m2.replace(re_dq, '&quot;'); 
      }); 
    return text; 
} 

, 정규식 쉽게 수정할 수 있습니다.

관련 문제