[javascript] Javascript에서 괄호 사이에 문자열을 가져 오는 정규식

괄호 사이에있는 문자열을 반환하는 정규 표현식을 작성하려고합니다. 예를 들어 : 문자열 “(“및 “)”사이에있는 문자열을 가져오고 싶습니다.

I expect five hundred dollars ($500).

돌아올 것이다

$500

Javascript에서 두 문자열 사이의 문자열을 얻는 정규식을 찾았습니다.

하지만 정규식을 처음 사용합니다. 정규식에서 ‘(‘, ‘)’를 사용하는 방법을 모르겠습니다



답변

\괄호 와 일치하는 이스케이프 처리 된 괄호 세트와 캡처 그룹을 작성하는 일반 괄호 그룹을 작성해야합니다.

var regExp = /\(([^)]+)\)/;
var matches = regExp.exec("I expect five hundred dollars ($500).");

//matches[1] contains the value between the parentheses
console.log(matches[1]);

고장:

  • \( : 여는 괄호와 일치
  • ( : 그룹 캡처 시작
  • [^)]+: 하나 이상의 비 )문자 와 일치
  • ) : 엔드 캡처 그룹
  • \) : 닫는 괄호 일치

다음은 RegExplained 에 대한 시각적 설명입니다 .


답변

문자열 조작을 시도하십시오.

var txt = "I expect five hundred dollars ($500). and new brackets ($600)";
var newTxt = txt.split('(');
for (var i = 1; i < newTxt.length; i++) {
    console.log(newTxt[i].split(')')[0]);
}

또는 정규 표현식 ( 위와 비교하여 다소 느림 )

var txt = "I expect five hundred dollars ($500). and new brackets ($600)";
var regExp = /\(([^)]+)\)/g;
var matches = txt.match(regExp);
for (var i = 0; i < matches.length; i++) {
    var str = matches[i];
    console.log(str.substring(1, str.length - 1));
}


답변

임시 전역 변수 사용을 피하기 위해 기능 프로그래밍 스타일에 대한 Mr_Green의 답변 을 포팅 했습니다 .

var matches = string2.split('[')
  .filter(function(v){ return v.indexOf(']') > -1})
  .map( function(value) {
    return value.split(']')[0]
  })


답변

간단한 솔루션

주의 사항 :이 솔루션은이 질문에서 문자열과 같이 단일 “(“및 “)”만있는 문자열에 사용할 수 있습니다.

("I expect five hundred dollars ($500).").match(/\((.*)\)/).pop();

온라인 데모 (jsfiddle)


답변

통화 기호 뒤에 숫자 만 \(.+\s*\d+\s*\)있으면 작동합니다.

또는 \(.+\)괄호 안에 무엇이든지


답변

내부 괄호를 제외한 괄호 안의 하위 문자열을 일치시키기 위해 사용할 수 있습니다

\(([^()]*)\)

무늬. 참조 정규식 데모 .

JavaScript에서는 다음과 같이 사용하십시오.

var rx = /\(([^()]*)\)/g;

패턴 세부 사항

  • \((
  • ([^()]*)-캡처 그룹 1 : 및 이외의 0 개 이상의 문자 와 일치 하는 부정 문자 클래스()
  • \))숯.

전체 일치를 얻으려면 그룹 0 값을 잡고 괄호 안에 텍스트가 필요한 경우 그룹 1 값을 가져옵니다.

최신 자바 스크립트 코드 데모 (를 사용 matchAll) :

const strs = ["I expect five hundred dollars ($500).", "I expect.. :( five hundred dollars ($500)."];
const rx = /\(([^()]*)\)/g;
strs.forEach(x => {
  const matches = [...x.matchAll(rx)];
  console.log( Array.from(matches, m => m[0]) ); // All full match values
  console.log( Array.from(matches, m => m[1]) ); // All Group 1 values
});

레거시 JavaScript 코드 데모 (ES5 호환) :


답변

let str = "Before brackets (Inside brackets) After brackets".replace(/.*\(|\).*/g, '');
console.log(str) // Inside brackets