2012-10-11 3 views
3

대소 문자 구별 검색에서 대소 문자를 구별하는 좋은 방법이 있을지 궁금합니다. 아래 예 :대소 문자를 구별하는 대/소문자 구분 검색 대체

function filter(searchTerm) { 
    var searchPattern = new RegExp(searchTerm, 'ig'); 
    .... 
    textToCheck = textToCheck.replace(searchPattern, '<span class="searchMatchTitle">' + searchTerm + '</span>'); 

함수의 상단에있는 검색 용어는 그 안에 국회 의사당을 가질 수와 나는 따라서 '나'플래그, 상단 또는 낮은으로 어떤 문자열과 일치 만들고 싶었다.

원래의 seach 문자열 (어떤 믹스 일 수도 있음)을 사용하고 다른 형식이있을 수있는 대체품을 사용하기 때문에 대체 할 때 이상한 결과가 나타납니다.

Id는 원래 서식을 보존하고 주위에 범위를 추가하는 것을 정말 좋아합니다. 나의 접근 방식이 최선의 방법입니까? 그렇다면 Perl과 같은 방법으로 그룹을 사용할 수 있습니까? 예 : 구문과 예제와 유사한 유형을 사용하여

s/ \(=\+\) /\1/g 

내 시도는 웹은 당신이 그룹을 사용할 수 있습니다

답변

4
function filter(searchTerm) { 
    var searchPattern = new RegExp('('+searchTerm+')', 'ig'); 
    .... 
    textToCheck = textToCheck.replace(searchPattern, '<span class="searchMatchTitle">$1</span>'); 
    ... 
} 
+0

멋진 대답을! 아름답게 작동합니다. 나 같은 다른 정규 표현식 더미의 경우 : 정규 표현식의 나머지 부분에 대한 여는 괄호와 닫는 괄호가 중요합니다. 그렇지 않으면 출력에 문자 그대로 "$ 1"로 끝납니다. – Michael

3

교체 리터럴 문자열을 초래할 형성하지만 구문은 약간 다릅니다. 이런 식으로 뭔가를 시도 :

var str = 'this is a dog eat Dog eat DOG world' 
str = str.replace(/(dog)/gi, '<span>$1</span>') 

// str is now: "this is a <span>dog</span> eat <span>Dog</span> eat <span>DOG</span> world" 
관련 문제