Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 08.10.2008, 13:06
Интересующийся
Отправить личное сообщение для baal1988 Посмотреть профиль Найти все сообщения от baal1988
 
Регистрация: 14.08.2008
Сообщений: 28

Сообщение от ZoNT Посмотреть сообщение
var str = "1) Number of tube13(( Hi all people * _ +)) Number of tube((HI AKK))";
alert(str.match(/([^\(\)]+)(?=\)+)/g));


Результат - неверный
Ну да
Ответить с цитированием
  #12 (permalink)  
Старый 08.10.2008, 13:43
Интересующийся
Отправить личное сообщение для baal1988 Посмотреть профиль Найти все сообщения от baal1988
 
Регистрация: 14.08.2008
Сообщений: 28

Сделал вот так
var reg = /Number of tube\(+([^\(\)]+)\)+/g;
var str = "1) Number of tube((13 Hi all people * _ +)) Number of tube((HI AKK)) Number of Kills ((Privet)) Number of tube((HI HOUSE))";
var arr=str.match(reg);
alert(arr);

Не могу понять почему резульатом служит Number of tube((13 Hi all people * _ +)),Number of tube((HI AKK)),Number of tube((HI HOUSE))
Ведь в круглых скобках стоит запомнить только то что находится в скобках ? Хочется чтобы результатом было - 13 Hi all people * _ +,HI AKK,HI HOUSE
Ответить с цитированием
  #13 (permalink)  
Старый 08.10.2008, 13:50
Аватар для Snipe
Профессор
Отправить личное сообщение для Snipe Посмотреть профиль Найти все сообщения от Snipe
 
Регистрация: 06.05.2008
Сообщений: 765

то что в скобках, вроде хранится в .$1, .$2 и т.д.
Ответить с цитированием
  #14 (permalink)  
Старый 08.10.2008, 13:56
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

var reg = /Number of tube\(+[^\)\(]+\)+/g;
var str = "1) Number of tube((13 Hi all people * _ +)) Number of tube((HI AKK)) Number of Kills ((Privet)) Number of tube((HI HOUSE))";
var arr=str.match(reg,'').join('').replace(/\)+/g,'').split(/Number of tube\(+/);
alert(arr);
Ответить с цитированием
  #15 (permalink)  
Старый 08.10.2008, 14:25
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Я написал код под конкретный заданный вопрос. Очевидно, что он будет работать, если условия менять.
Ответить с цитированием
  #16 (permalink)  
Старый 08.10.2008, 15:30
Интересующийся
Отправить личное сообщение для baal1988 Посмотреть профиль Найти все сообщения от baal1988
 
Регистрация: 14.08.2008
Сообщений: 28

Сообщение от ZoNT Посмотреть сообщение
var reg = /Number of tube\(+[^\)\(]+\)+/g;
var str = "1) Number of tube((13 Hi all people * _ +)) Number of tube((HI AKK)) Number of Kills ((Privet)) Number of tube((HI HOUSE))";
var arr=str.match(reg,'').join('').replace(/\)+/g,'').split(/Number of tube\(+/);
alert(arr);
А можно объяснить что здесь к чему вообще пожалуйста ? Разобраться хочется...

Я сделал вот так как первый раз говорили
var exam = "";
var reg = /Number of tube\(+([^\(\)]+)\)+/g;
var str = "1) Number of tube((13 Hi all people * _ +)) Number of tube((HI AKK)) Number of Kills ((Privet)) Number of tube((HI HOUSE))";
var arr = str.match(reg);
var mas = new Array();
for (var i=0; i<arr.length; i++) {
mas[i]=arr[i].replace("Number of tube", ""); mas[i]=mas[i].replace("))", ""); mas[i]=mas[i].replace("((", "");
}
alert(mas);


Ну у меня сразу же вопрос появился ? Как измениться код если будет существовать переменная exam которая будет меняться и содержать в себе слово Number of tube, как сделать чтобы шаблон реагировал на переменную как на переменную, а не просто слово какое-то ,например
var exam = "Number of tube";
var reg = "/" + exam + "\(+([^\(\)]+)\)+/g";

я просто синтаксис незнаю буду благодарен за помощь ...
Ответить с цитированием
  #17 (permalink)  
Старый 08.10.2008, 15:34
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

var reg = new RegExp(exam+'\\(+[^\\(\\)]+\\)+','g');
Ответить с цитированием
  #18 (permalink)  
Старый 08.10.2008, 15:42
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

ZoNT,
А почему вот в этом случае:
(?:Number of tube\(+)([^\)]+)(?=\)+)

Первая non-capturing group все равно попадает в matches?
Ответить с цитированием
  #19 (permalink)  
Старый 08.10.2008, 15:45
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

потому что в match попадает вся подстрока из шаблона, а не выражение в скобках..
Ответить с цитированием
  #20 (permalink)  
Старый 08.10.2008, 15:53
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

ZoNT,
Но (?=) работает ведь.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения задача посложнее faunder Общие вопросы Javascript 5 15.09.2008 14:17
Регулярные выражения faunder Общие вопросы Javascript 2 15.09.2008 09:49
регулярные выражения в JS bifidokk Events/DOM/Window 2 02.06.2008 12:29