Регулярное выражение для получения строки между скобками в Javascript
Я пытаюсь написать регулярное выражение, которое возвращает строку, которая находится в скобках. Например: я хочу получить строку, которая находится между строк "(" и ")"
I expect five hundred dollars (0).
вернутся
0
найдено регулярное выражение для получения строки между двумя строками в Javascript
но я новичок в регулярных выражений. Я не знаю, как использовать ' ( ' ,') ' в регулярном выражении
7 ответов:
вам нужно создать набор экранированных (с
\) скобки (соответствующие скобкам) и группа обычных скобок, которые создают вашу группу захвата:var regExp = /\(([^)]+)\)/; var matches = regExp.exec("I expect five hundred dollars (0)."); //matches[1] contains the value between the parentheses console.log(matches[1]);поломки:
\(: соответствует открывающим скобкам(: начать захват группы[^)]+: матч один или несколько)символы): конец захвата группы\): матч закрытия скобкивот визуальное объяснение на RegExplained
попробуйте манипуляции со строками:
var txt = "I expect five hundred dollars (0). and new brackets (0)"; var newTxt = txt.split('('); for (var i = 1; i < newTxt.length; i++) { console.log(newTxt[i].split(')')[0]); }или regex (что-то медленно по сравнению с выше)
var txt = "I expect five hundred dollars (0). and new brackets (0)"; 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] })
только для цифр после знака валюты:
\(.+\s*\d+\s*\)должно работатьили
\(.+\)для чего-либо внутри скобок
простое решение
обратите внимание: это решение используется для строки, которая имеет только один " ("и") " как строка в этом вопросе.
("I expect five hundred dollars (0).").match(/\((.*)\)/).pop();
чтобы соответствовать подстроке внутри скобок, исключая любые внутренние скобки, вы можете использовать
\(([^()]*)\)узор. Смотрите the regex demo.
в JavaScript, используйте его как
var rx = /\(([^()]*)\)/g;детали шаблон
\(- a(char([^()]*)- захват группы 1: a отрицается класс символов соответствие любым 0 или более символов, кроме(и)\)- a)char.чтобы получить весь матч, захватите значение группы 0, Если вам нужен текст внутри скобок, захватите значение группы 1:
var strs = ["I expect five hundred dollars (0).", "I expect.. :( five hundred dollars (0)."]; 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)); }
var str = "I expect five hundred dollars (0) ()."; var rex = /$\d+(?=\))/; alert(rex.exec(str));будет соответствовать первое число, начиная с $ и последующим ')'. ') 'не будет частью матча. Код предупреждает о первом совпадении.
var str = "I expect five hundred dollars (0) ()."; var rex = /$\d+(?=\))/g; var matches = str.match(rex); for (var i = 0; i < matches.length; i++) { alert(matches[i]); }этот код предупреждает со всеми матчами.
ссылки:
поиск "?=северный" http://www.w3schools.com/jsref/jsref_obj_regexp.asp
поиск "x(?=год)" https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/RegExp
Comments