Регулярное выражение для получения строки между круглыми скобками в Javascript

Вопрос:Я пытаюсь написать регулярное выражение, которое возвращает строку, которая находится между круглыми скобками. Например: я хочу получить строку, которая находится между строками "(" и ")" I expect five hundred dollars ($500). вернет $500 Найдено Регулярное выражение для получения строки между двумя строками в Javascript Но я новичок в регулярном выражении. Я не знаю, как использовать

Вопрос:

Я пытаюсь написать регулярное выражение, которое возвращает строку, которая находится между круглыми скобками. Например: я хочу получить строку, которая находится между строками “(” и “)”

I expect five hundred dollars ($500).

вернет

$500

Найдено Регулярное выражение для получения строки между двумя строками в Javascript

Но я новичок в регулярном выражении. Я не знаю, как использовать ‘(‘, ‘)’ в regexp

Лучший ответ:

Вам нужно создать набор экранированных (с ) скобок (соответствующих скобкам) и группу регулярных скобок, которые создают вашу группу захвата:

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

Ответ №1

Попробуйте манипулировать строкой:

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)); } Ответ №2

Портировано Mr_Green ответ в стиле функционального программирования, чтобы избежать использования временных глобальных переменных.

var matches = string2.split(‘[‘) .filter(function(v){ return v.indexOf(‘]’) > -1}) .map( function(value) { return value.split(‘]’)[0] }) Ответ №3

Только цифры после знака валюты: (.+s*d+s*) должен работать

Или (.+) для чего-либо внутри скобок

Ответ №4

Чтобы соответствовать подстроке внутри круглых скобок, исключая любые внутренние круглые скобки, которые вы можете использовать

(([^()]*))

шаблон. См. Демо-версию regex.

В JavaScript используйте его как

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

Сведения о шаблоне

Чтобы получить полное совпадение, возьмите значение 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)); }Ответ №5

Простое решение

Уведомление: это решение используется для строки, которая имеет только одну строку ( “и” ) как строку в этом вопросе.

(«I expect five hundred dollars ($500).»).match(/((.*))/).pop();

Онлайн-демонстрация (jsfiddle)

Ответ №6var 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

Ответ №7let str = «Before brackets (Inside brackets) After brackets».replace(/.*(|).*/g, »); console.log(str) // Inside brackets

Оцените статью
Добавить комментарий