Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 10.05.2016, 21:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Sergey_New,
не понимаю вас
Ответить с цитированием
  #12 (permalink)  
Старый 10.05.2016, 21:43
Аспирант
Отправить личное сообщение для Sergey_New Посмотреть профиль Найти все сообщения от Sergey_New
 
Регистрация: 21.07.2009
Сообщений: 71

рони,
сам паттерн должен определять, если после второй группы нет текста, то нужно возвращать "", в другом случае возвращать третью группу. Т.е. типа:
((\d+)\s(\w*))|((\d+)\s(\w*)\s*(.*))
Ответить с цитированием
  #13 (permalink)  
Старый 10.05.2016, 21:52
Аспирант
Отправить личное сообщение для Sergey_New Посмотреть профиль Найти все сообщения от Sergey_New
 
Регистрация: 21.07.2009
Сообщений: 71

Нашел совет: Нужно использовать ленивый квантификатор.
Пока не разобрался где его применить.
Ответить с цитированием
  #14 (permalink)  
Старый 10.05.2016, 21:59
Аспирант
Отправить личное сообщение для Sergey_New Посмотреть профиль Найти все сообщения от Sergey_New
 
Регистрация: 21.07.2009
Сообщений: 71

Похоже получилось:
(\d+)\s(\w*)\s*?(.*)
Ответить с цитированием
  #15 (permalink)  
Старый 10.05.2016, 22:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Sergey_New,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
<textarea name="">
0 HEAD
1 SOUR AGES
2 VERS 2.0.4
</textarea>
<script>
  var a = document.querySelector("textarea").value, k = [];
  a.replace(/^(\d+)\s(\w*)\s*?((\S.*?)?$)/gim, function(s,a,b,c) {
   k.push([a,b,c])
   return s
});
alert(JSON.stringify(k))

</script>
</body>
</html>
Ответить с цитированием
  #16 (permalink)  
Старый 10.05.2016, 22:44
Аспирант
Отправить личное сообщение для Sergey_New Посмотреть профиль Найти все сообщения от Sergey_New
 
Регистрация: 21.07.2009
Сообщений: 71

рони,
спасибо!
Ответить с цитированием
  #17 (permalink)  
Старый 10.05.2016, 23:07
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Сообщение от Sergey_New
Например, использовать | (или) для определения третьей группы в паттерне
Вариант
var str = '0 HEAD\n\
1 SOUR AGES\n\
2 VERS 2.0.4';
var res = str.replace(/(\d+) (\w+)( (.*(\n|$)))?/g, 'Группа 1: $1\nГруппа 2: $2\nГруппа 3: $4');
alert(res);

Последний раз редактировалось Vlasenko Fedor, 10.05.2016 в 23:13.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить проблему Ingiborn Общие вопросы Javascript 0 10.07.2014 13:12
Помогите сделать так чтоб по клику открывалось и по клику же закрывалось Maxsl_89 Элементы интерфейса 1 25.10.2013 16:11
Помогите с тестированием fsb-k Работа 8 29.03.2013 11:20
Помогите разобраться!!! Greendumb Общие вопросы Javascript 8 19.08.2010 14:04
Помогите! Многоуровневые вкладки! sergeeeeee Элементы интерфейса 2 02.08.2010 23:50