2011-08-11 6 views
0

나는 정규 표현식을 통해 HTML 컨텐츠를 제거하는 기능이자바 스크립트 정규 표현식

<a href='site.com'> testing</a> 

공간을 유지하는 것이다. 또한이 같은 뭔가 : 나는 기능은 20 그래서 돌아 싶습니다

<a href='site.com'> $20</a> 

, 질문은 :

어떻게 정규 표현식을 수정 않은 $ 및 공백도 제거 얻을 수 있도록?

+1

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags는 –

+0

큰 스레드, 매우 인기가 있지만, 내 질문에 대답하지 않습니다 : p – luqita

+2

@luquita : 그는 요점이 있지만, 이런 종류의 일을하기 위해서는 DOM 방법을 사용해야합니다. – FK82

답변

3

당신은 당신의 표현을 확장하고 사용할 수 있습니다

a.replace(/(?:\s|\$)*<.*?>(?:\s|\$)*/g, ""); 

이제 (?:\s|\$)이 추가되었습니다. 이것은 공백 패턴 (\s) 또는 $ 기호 (\$)의 패턴을 형성합니다. 그렇지 않으면 줄 끝과 일치하기 때문에 $ 기호 앞에 이스케이프가 필요합니다. 괄호 바로 뒤에 ?:을 놓으면 그룹 결과로 반환되지 않는 검색 용 그룹이 만들어집니다.

패턴이 두 번 발생하여 태그 앞뒤의 공백이나 $ 기호를 제거 할 수 있습니다.

+1

그리고? : 더 많은 l33t를 만들 수 있습니다. :-) – Gerben

+0

앞에서 언급했듯이 공백 문자가 검색 그룹으로 간주되지 않도록 '? :'가 있습니다. 대체하는 데는 문제가되지 않지만 누군가가 그룹을 포착하려면 놀라움을 예방해야합니다. 나는 단지 구도자가 패턴을 재사용하고 문자열의 요소를 검색하기를 원할 수도 있다고 생각하고 있었다. 그러면'? :'이 누락되면 asker는 재미있는 추가 캡처 그룹을 갖게됩니다. –

+0

'(? : \ s | \ $)'을'[\ s $]'(''\\ \ ')로 바꿀 수 있습니다. –

0

대안

a.replace(/<.*?[>][\s$]*/g, ""); 
0

이거나 HTML 태그가 존재하지 않는 경우에는 공백 달러를 제거 하였다.

a.replace(/(<.*?>)|([\s$])/g, ""); 
관련 문제