큰 텍스트 블록에서 여러 번 대체하고 HTML 태그를 사용하여 단어를 하이퍼 링크로 변환하려고합니다. 나는 표현식 (\b)(word)(\b)
을 사용하여 내가 원하는 단어를 찾는 데 대부분 시간을 사용할 수 있지만 하나의 문제는 괄호 (<
과 >
)가 경계로 간주된다는 것인데, 같은 문자열에서 다시 표현식을 실행할 때, 내가 이미 링크로 변환 한 단어와 일치합니다. 나는 표현식 ([\s-_()])(word)([\s-_()])
에서 방금 해결 방법을 찾았지만 문자를 허용하지 않고 단어 주위에 어떤 문자가 허용되는지 알아야합니다. 그렇다면이 단어를 <
과 >
을 제외한 경계와 일치시키는 표현식을 사용할 수있는 방법이 있습니까?꺾쇠 괄호를 제외하고 단어 경계를 일치 시키십시오.
주 - 전역 플래그를 사용할 수 없습니다. 이것은 텍스트 블록 내에서 1과 모두 사이의 'n'대체를 수행하는 데 사용됩니다.
예
var str = "Plain planes are plain. Plain pork is plain. Plain pasta is plainly plain.";
str = str.replace(/(\b)(plain)(\b)/, "$1<a href='www.plain.com'>$2</a>$3");
// this will result in the first instance of 'plain' becoming
// a link to www.plain.com
str = str.replace(/(\b)(plain)(\b)/, "$1<a href='www.plain.com'>$2</a>$3");
// this will NOT make the second instance of 'plain' into
// a link to www.plain.com
// instead, the 'plain' in the middle of the anchor tag
// is matched and replaced causing nested anchor tags
를 사용하여 자바 스크립트 DOM을 걸어 텍스트 노드 만 정규식 교체를 적용 할 수 있습니다. [여기있다 방법] (http://stackoverflow.com/a/2525465/1633117) –
텍스트 노드? 무슨 뜻인지 모르겠다. –
DOM이 태그가 아닌 부분. 링크 된 스 니펫을 확인하십시오. 세 번째 줄을 대체 코드로 바꾸면 정상적으로 작동합니다. –