Javascript에서 정규식 하위 문자열 일치를 어떻게 바꿀 수 있습니까?


111
var str   = 'asd-0.testing';
var regex = /asd-(\d)\.\w+/;

str.replace(regex, 1);

전체 문자열 str1. 전체 문자열 대신 일치하는 하위 문자열을 바꾸고 싶습니다. Javascript에서 가능합니까?

답변:


140
var str   = 'asd-0.testing';
var regex = /(asd-)\d(\.\w+)/;
str = str.replace(regex, "$11$2");
console.log(str);

또는 문자열에 다른 숫자가없는 것이 확실한 경우 :

var str   = 'asd-0.testing';
var regex = /\d/;
str = str.replace(regex, "1");
console.log(str);

1
또는 함수 사용 : 'asd-0.testing'.replace (/ (asd-) \ d (\. \ w +) /, function (mystring, arg1, arg2) {return arg1 +'mynumber '+ arg2})
Ivan 레이브

1
정규식의 구조를 모르는 대답이 있습니까? 여기 당신은 기본적으로 두 경기에 새로운 정규 표현식을 만드는
마틴 Massera

당신이 등 $ 1, $ 2와 원하는 부분의 주위에 괄호 ()가 필요합니다 알고 좋다
바스 Slagter

57

사용 str.replace(regex, $1);:

var str   = 'asd-0.testing';
var regex = /(asd-)\d(\.\w+)/;

if (str.match(regex)) {
    str = str.replace(regex, "$1" + "1" + "$2");
}

편집 : 주석에 대한 적응


전체 문자열이 아닌 부분 문자열을 '1'로 바꾸고 싶습니다.
dave

24

나는 당신이 교체하고 싶은 것을 전후에 부품을 얻고 양쪽에 놓을 것입니다.

처럼:

var str   = 'asd-0.testing';
var regex = /(asd-)\d(\.\w+)/;

var matches = str.match(regex);

var result = matches[1] + "1" + matches[2];

// With ES6:
var result = `${matches[1]}1${matches[2]}`;

5
+1 저는 개인적으로 골절 할 성냥을 모으는 것을 좋아합니다.
eduncan911 2014

내 의견으로는 일치하는 세트를 사용하는 것이 더 읽기 쉽다는 데 동의합니다.
Travis J

0

목표를 달성하는 가장 간단한 방법은 다음과 같습니다.

var str   = 'asd-0.testing';
var regex = /(asd-)(\d)(\.\w+)/;
var anyNumber = 1;
var res = str.replace(regex, `$1${anyNumber}$3`);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.