일치하는 그룹을 참조하여 자바 스크립트를 대체 하시겠습니까?


228

와 같은 문자열이 있습니다 hello _there_. 내가 가진 두 개의 밑줄을 교체하고 싶습니다 <div></div>사용하여, 각각 자바 스크립트를 . 따라서 출력은 다음과 같습니다 hello <div>there</div>. 문자열에는 여러 쌍의 밑줄이 포함될 수 있습니다.

내가 찾던하는 방법입니다 각 경기, 루비 그것을 수행하는 방법에 함수를 실행합니다 :

"hello _there_".gsub(/_.*?_/) { |m| "<div>" + m[1..-2] + "</div>" }

또는 루비에서 수행 할 수있는 방법과 일치하는 그룹을 참조 할 수 있습니다.

"hello _there_".gsub(/_(.*?)_/, "<div>\\1</div>")

어떤 아이디어 나 제안?

답변:


384
"hello _there_".replace(/_(.*?)_/, function(a, b){
    return '<div>' + b + '</div>';
})

아, 아니면 :

"hello _there_".replace(/_(.*?)_/, "<div>$1</div>")

10
Javascript $1대신 \1?를 사용합니까 ? 누군가 문서에 대한 링크를 제공합니까?
daveloyall 2016 년

3
replacementValue함수가 될 수 있고 catch 그룹에 따라 다른 인수가 전달됩니까? 놀랄 만한!
daveloyall 2016 년

4
난 \ 1 일 발견하지만 난 정규식의 변화를 사용하고 있지만, $ 1하지 않았다 : developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
JSH

1
@CalculatorFeline "정규식 자체"라고 말하면 대체를 위해 정규식을 사용하려고 할 때 어떤 정규식을 식별하지 못합니다. 이 작업을 수행하려는 많은 사람들이 있어야합니다 "hello _there_".replace(/_(.*?)_/, /<div>\1<\/div>/).
스튜어트


35

replace대신 사용할 수 있습니다 gsub.

"hello _there_".replace(/_(.*?)_/g, "<div>\$1</div>")

19
백 슬래시를 제거 할 수 있습니다.
CalculatorFeline

7

에 의해 지정된 교체 문자열 및 교체 패턴 $. 여기 이력서 :

여기에 이미지 설명을 입력하십시오

문서 링크 : 여기

"hello _there_".replace(/_(.*?)_/g, "<div>$1</div>")



노트 :

당신은을하려면 $대체 문자열의 사용 $$. vscode 스 니펫 시스템과 동일합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.