JavaScript / 정규식 : 괄호 사이의 텍스트 제거


93

바꿀 수 있을까

Hello, this is Mike (example)

Hello, this is Mike

Regex에서 JavaScript를 사용하십니까?

답변:


209
"Hello, this is Mike (example)".replace(/ *\([^)]*\) */g, "");

결과:

"Hello, this is Mike"

14
.replace ()는 문자열 자체를 변경하지 않고 새 문자열 만 반환합니다. 따라서 여전히 변수를 변경 한 것과 동일하게 설정해야합니다.
Ayub

2
괄호가 문자열 중간에있는 경우 위의 정규식은 그 주위의 모든 공백을 제거합니다. 이것은 아마도 좋지 않을 것입니다.
Nigel Johnson

1
이것을 역으로 수행하는 방법? I want (example)only
carte

다음과 같은 경우 작동하지 않습니다. 약간 엉망이 되었으나 (위 (오른쪽)) 발생합니다. :)
TigrouMeow

27
var str = "Hello, this is Mike (example)";

alert(str.replace(/\s*\(.*?\)\s*/g, ''));

또한 괄호 앞뒤의 여분의 공백을 대체합니다.


6

시험 / \([\s\S]*?\)/g

어디

(공백)은 문자 (공백)와 문자 그대로 일치합니다.

\(문자 (그대로 문자 와 일치

[\S\s]모든 문자 \S와 일치 ( 비 공백 문자와 \s일치하고 모든 공백 문자 와 일치)

*? 0 번과 무제한 시간 사이의 일치

\)문자 )그대로 문자 와 일치

g 전 세계적으로 일치

코드 예 :

var str = "Hello, this is Mike (example)";
str = str.replace(/ \([\s\S]*?\)/g, '');
console.log(str);
.as-console-wrapper {top: 0}


1

이 버전이 모든 경우에 가장 적합하다는 것을 알았습니다. 모든 공백을 제거하지는 않습니다.

예 : "a (테스트) b"-> "a b"

"Hello, this is Mike (example)".replace(/ *\([^)]*\) */g, " ").trim(); "Hello, this is (example) Mike ".replace(/ *\([^)]*\) */g, " ").trim();


조심은 trim: 보편적으로 지원되지 않습니다 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/... , 적어도 그것은 훨씬 더 보이는 2017 년 ... 2015 년 아니었다.
Christophe Roussy

"이것 (예 (여기))이 좋지 않음"으로 실패합니다. 즉. 중첩 된 괄호!
Marc

1

중첩 된 괄호 안의 텍스트도 제거해야하는 경우 :

        var prevStr;
        do {
            prevStr = str;
            str = str.replace(/\([^\)\(]*\)/, "");
        } while (prevStr != str);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.