2011-03-25 6 views
8

정규식 패턴에서 중괄호를 일치시키는 데 도움을 찾고 있습니다. 저는 여러 가지 탈출구 조합과 운이 좋은 기호를 시도했습니다. 아마 금요일 오후이고 뭔가를 바라보고 있기 때문에 아마도; 그러나 당신의 아이디어는 크게 감사 할 것입니다. 아래의 코드 :정규식 일치하는 중괄호

function stringFormat(str, arr) { 
    for (var i = 0; i < arr.length; i++) { 
     var regExp = new RegExp('^\{' + i + '\}$', 'g'); 
     str = str.replace(regExp, arr[i]); 
    } 
    return str; 
} 

var str = '<p>The quick {0}, brown {1}</p>'; 

$('#test').html(stringFormat(str, ['brown', 'fox'])); 

는 또한

+0

... –

답변

14

, 왜 하나에 모든 것이 급습하지 arr에 '{1}'과 같은 문자열이 포함 된 경우 이상하게 보입니다. 예 :
stringFormat('{0}', ['{1}', 'foo']) === '{1}' 지속적으로 대신 원래의 고정 된 버전으로 'foo'하지만 일관성 당신 말이 맞아요 보인다 stringFormat('{1}', ['foo', '{0}']) === '{0}'

+0

Thanks Mike. 권장 사항을 높이 평가하고 잠재적 문제를 해결합니다. – gnome

+0

format 함수를 사용했지만 정적 메서드로'String'을 추가하고 사용자가 배열을 전달하는 대신'arguments' 배열을 사용했습니다. http://codetunnel.com/blog/post/string-replacement-is-natively-support-by-consolelog – Chev

+0

링크가 @Chev에있는 것 같습니다. 알기 쉽습니다 :'arguments'는 배열이 아닙니다. –

6

http://jsfiddle.net/rgy3y/1/ 당신이 \\를 입력 할 필요가 리터럴 문자열에서 \를 얻으려면,이에 바이올린을 시작했습니다. 특히, '\{' == '{'. '\\{'을 원합니다.

+0

와 (대만족!). 나는 그것이 금요일 오후 인 것을 알고 있었다 :-) – gnome

0

자바 스크립트 (또는 무엇이든) 정규식에 익숙하지 않지만 {X} (또는 해당 정규식에 해당하는 행만 다시 정규식에 따라 다름) 식만 일치합니다.
'^은 {'+ 내가 + '} $'

는^및 $ 제거합니다. 이 혜택 아무것도가있다

var str = '<p>The quick {0}, brown {1}</p>'; 

// Alerts <p>The quick brown, brown fox</p> 
alert(stringFormat(str, ['brown', 'fox'])); 

, 귀하의 예제에서

function stringFormat(str, arr) { 
    return str.replace(
     /\{([0-9]+)\}/g, 
     function (_, index) { return arr[index]; }); 
} 

대신 다른 숫자의 무리와 일치하도록 노력