2011-04-06 4 views
3

나는 쿼리 문자열에서 일치하는 항목을 찾을 수있는 패턴을 가지고 :Javascript regexp : 역 참조 패턴에 변수 사용?

'url.com/foo/bar?this=that&thing=another'.replace('/(' + key + '=)([^&]*)/', '$1test') 

:

'url.com/foo/bar?this=that&thing=another'.replace(/(thing=)([^&]*)/, '$1test') 

내가 좋아하는 일치하도록 PARAM로 변수 값을 사용한다 할 수 있도록하고 싶습니다 무엇 코드가 어떻게 사용되는지에 대한 문맥은 다음과 같습니다 :

GetSrcParam: function(key, value) { 
      var newSrc = $(this._image).attr('src'), 
       pattern = '(' + key + '=)([^&]*)'; 

      if (newSrc.match(pattern) == null) 
       newSrc += '&' + key + '=' + value; 
      else 
       newSrc = newSrc.replace(newSrc, '$1' + value); 

      return newSrc; 
     } 

그러나 의도 한대로 작동하지 않습니다. 아무도 도와 줄 수 있습니까?

+0

안녕하세요. 코드 형식을 사용하십시오 (버튼 만 누르면됩니다). - 또한 패턴 자체 만이 아닌 일부 JS 코드를 제공하십시오. 문제는 아마도 당신이 당신의 패턴을 준비하는 방법에있을 것입니다. – vbence

+0

죄송합니다. 통지하지 않았습니다. js를 사용하고있는 (또는 사용하고 싶은) 컨텍스트로 업데이트했습니다. –

답변

3

문자열에서 정규식을 구성하려면 구분 기호를 삭제해야합니다 (정규식에 포함 된 경우 백 슬래시를 두 번 사용해야합니다).

myregex = new RegExp('(' + key + '=)([^&]*)') 
'url.com/foo/bar?this=that&thing=another'.replace(myregex, '$1test') 

당신이 또한 url.com/foo/bar?something=another에서 thing=another 일치하는 것을 알고 계십니까보십시오? 이 문제를 방지하려면 단어 경계 앵커를 추가하십시오.

+0

눈부신, 감사합니다 :) –