2011-03-23 3 views
1

사용자 선택에 따라 텍스트 문자열을보고, 범위의 > 태그에 문자열을 래핑하는 자바 스크립트가 있습니다. 내가 문자열의 문자열을보고 문자열의 기존 HTML 태그를 확인하는 정규 표현식을 찾고 있는데, 존재하는 경우 html을 무효화하지 않도록 범위를 분할합니다.정규식을 사용하여 html 태그를 삽입하여 유효하지 않은 html을 생성합니다

예를 들어, 나는 다음과 같은 텍스트

 

<p>Lorem ipsum dolor sit amet, <i>consectetur adipiscing elit</i>. 
Curabitur tortor risus, facilisis vitae bibendum sit amet, mattis non dui.</p> 

을 가지고 말할 수 그리고 사용자는 "AMET, < 내가 > consectetur"선택합니다. 문자열로 끝낼한다 "< 범위 > AMET, </스팬 > < 내가 > < 범위 > consectetur </스팬 >"반대 TP "< 범위 > AMET, < 내가 > consectetur </스팬 >"

+2

정규 표현식을 사용하여 작업하는 것이 어려울 것입니다. 보통 정규식은 HTML 파싱에 나쁜 생각입니다. 예 : 닫는 태그가 선택 영역 내에 나타나면 하나의 스팬 블록 만 만들고 싶다고 생각합니까? 이 경우 의미론이 프로세스에 들어가고 정규 표현식은 적합하지 않습니다. HTML 파서를보십시오. –

답변

3

HTML을 RegEx로 파싱해서는 안됩니다. 참조 : RegEx match open tags except XHTML self-contained tags

+0

좀 더 자세히 설명해주십시오 (Bobince의 현재 유명한 호언 장담을 전체적으로 인용하지 않음). –

+0

나는이 문제를 해결하기 위해 정규식을 피하는 것을 좋아한다. 더 나은 접근 방법은 무엇일까요? – cangeceiro

+0

+1 RegEx를 HTML과 함께 사용할 때 발생하는 문제에 대해 사용자에게 경고합니다. 그러나 참조하는 질문에는 답변이 게시되어있어 제한된 경우 HTML을 정규식으로 구문 분석하는 것이 합리적임을 나타냅니다. 공식적으로 HTML의 ** 구조 **를 구문 분석 할 수 없다는 것은 명백합니다. 하지만 태그가 무엇이고 텍스트가 무엇인지를 결정할 때 정규 표현식을 사용할 수 있습니다. 그것은 매우 다른 문제입니다. 이 경우 포스터의 질문은 실제로 정규 표현식으로 처리 될 수 있다고 생각합니다. (문제를 해결하는 더 좋은 방법이 있을지 모르지만) –

관련 문제