Регулярное выражение для получения строки между круглыми скобками в Javascript
Я пытаюсь написать регулярное выражение, которое возвращает строку, которая находится между круглыми скобками. Например: я хочу получить строку, которая находится между строками "(" и ")"
I expect five hundred dollars ($500).
вернет
$500
Найдено Регулярное выражение для получения строки между двумя строками в Javascript
Но я новичок в регулярном выражении. Я не знаю, как использовать '(', ')' в regexp
Ответы
Ответ 1
Вам нужно создать набор экранированных (с \
) скобок (соответствующих скобкам) и группу регулярных скобок, которые создают вашу группу захвата:
var regExp = /\(([^)]+)\)/;
var matches = regExp.exec("I expect five hundred dollars ($500).");
//matches[1] contains the value between the parentheses
console.log(matches[1]);
Ответ 2
Попробуйте манипулировать строкой:
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));
}
Ответ 3
Портировано Mr_Green ответ в стиле функционального программирования, чтобы избежать использования временных глобальных переменных.
var matches = string2.split('[')
.filter(function(v){ return v.indexOf(']') > -1})
.map( function(value) {
return value.split(']')[0]
})
Ответ 4
Только цифры после знака валюты: \(.+\s*\d+\s*\)
должен работать
Или \(.+\)
для чего-либо внутри скобок
Ответ 5
Чтобы соответствовать подстроке внутри круглых скобок, исключая любые внутренние круглые скобки, которые вы можете использовать
\(([^()]*)\)
шаблон. См. Демо-версию regex.
В JavaScript используйте его как
var rx = /\(([^()]*)\)/g;
Сведения о шаблоне
-
\(
- a (
char -
([^()]*)
- Захват группы 1: отрицательный класс символов, соответствующий любым 0 или более символам, отличным от (
и )
-
\)
- a )
char.
Чтобы получить полное совпадение, возьмите значение Group 0, если вам нужен текст внутри круглых скобок, возьмите значение Group 1:
var strs = ["I expect five hundred dollars ($500).", "I expect.. :( five hundred dollars ($500)."];
var rx = /\(([^()]*)\)/g;
for (var i=0;i<strs.length;i++) {
console.log(strs[i]);
// Grab Group 1 values:
var res=[], m;
while(m=rx.exec(strs[i])) {
res.push(m[1]);
}
console.log("Group 1: ", res);
// Grab whole values
console.log("Whole matches: ", strs[i].match(rx));
}
Ответ 6
Простое решение
Уведомление: это решение используется для строки, которая имеет только одну строку ( "и" ) как строку в этом вопросе.
("I expect five hundred dollars ($500).").match(/\((.*)\)/).pop();
Онлайн-демонстрация (jsfiddle)
Ответ 7
var str = "I expect five hundred dollars ($500) ($1).";
var rex = /\$\d+(?=\))/;
alert(rex.exec(str));
Будет соответствовать первое число, начинающееся с $и сопровождаемое ')'. ')' не будет частью матча. Код предупреждает о первом совпадении.
var str = "I expect five hundred dollars ($500) ($1).";
var rex = /\$\d+(?=\))/g;
var matches = str.match(rex);
for (var i = 0; i < matches.length; i++)
{
alert(matches[i]);
}
Этот код предупреждает обо всех матчах.
Литература:
найти "? = n"
http://www.w3schools.com/jsref/jsref_obj_regexp.asp
найдите "x (? = y)"
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/RegExp
Ответ 8
let str = "Before brackets (Inside brackets) After brackets".replace(/.*\(|\).*/g, '');
console.log(str) // Inside brackets