2013-09-01 2 views
3

У меня есть эти две строки ...Javascript Regex получения строки внутри скобок, удаление скобок

var str1 = "this is (1) test"; 
var str2 = "this is (2) test"; 

И хочу написать регулярное выражение для извлечения, что находится внутри скобок, как в "1" и "2" для получения строки, как ниже.

var str3 = "12"; 

прямо сейчас у меня есть это регулярное выражение, которое возвращающегося скобки тоже ...

var re = (/\((.*?)\)/g); 

var str1 = str1.match(/\((.*?)\)/g); 
var str2 = str2.match(/\((.*?)\)/g); 

var str3 = str1+str2; //produces "(1)(2)" 
+0

возможного дубликат [Как получить доступ к совпавшим группам в яваскрипте регулярного выражения?] (Http://stackoverflow.com/questions/432493/how-do-you- доступ к самой совпадающей-группе-в-JavaScript-регулярное выражение) – Barmar

ответ

4

Как это

Javascript

var str1 = "this is (1) test", 
    str2 = "this is (2) test", 
    str3 = str1.match(/\((.*?)\)/)[1] + str2.match(/\((.*?)\)/)[1]; 

alert(str3); 

На jsfiddle

См MDN RegExp

(х) соответствует й и запоминает совпадение. Они называются захватом скобок .

Например,/(foo)/соответствует и запоминает «foo» в «foo bar». Подходящая подстрока может быть вызвана из элементов результирующего массива 1, ..., [n] или из предопределенных свойств объекта RegExp $ 1, ..., $ 9.

Группы захвата имеют штраф за исполнение. Если вам не нужна нумерация подстроки 10, предпочитайте не захватывающие круглые скобки (см. Ниже).

0

Try:

/[a-zA-Z0-9\s]+\((\d+)\)[a-zA-Z0-9\s]+/ 

Это будет захватывать любую цифру из одного или нескольких внутри скобок ,

Пример: http://regexr.com?365uj

EDIT: В примере вы увидите заменить поле имеет только цифры, а не круглые скобки - это потому, что группа захвата $1 только захватывая сами цифры.

EDIT 2:

Попробуйте что-то вроде этого:

var str1 = "this is (1) test"; 
var str2 = "this is (2) test"; 

var re = /[a-zA-Z0-9\s]+\((\d+)\)[a-zA-Z0-9\s]+/; 

str1 = str1.replace(re, "$1"); 
str2 = str2.replace(re, "$1"); 

console.log(str1, str2); 
0

попробовать этот

var re = (/\((.*?)\)/g); 

    var str1 = str1.match(/\((.*?)\)/g); 
    var new_str1=str1.substr(1,str1.length-1); 
    var str2 = str2.match(/\((.*?)\)/g); 
    var new_str2=str2.substr(1,str2.length-1); 

    var str3 = new_str1+new_str2; //produces "12" 
Смежные вопросы