[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();
답변
통화 기호 뒤에 숫자 만 \(.+\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