Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.04.2016, 13:59
Интересующийся
Отправить личное сообщение для chatt Посмотреть профиль Найти все сообщения от chatt
 
Регистрация: 08.04.2016
Сообщений: 19

Замена разделителя между цифрами
Есть поле с текстом, в нем по нескольку раз встречаются символ точка с запятой ;
Нужно заменить ВСЕ ; находящиеся только МЕЖДУ ЦИФРАМИ на запятые.

Подскажите, пожалуйста, как будет выглядеть replace()?
Ответить с цитированием
  #2 (permalink)  
Старый 08.04.2016, 15:56
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

alert("ab;01;41:cd;22;a0;0".replace(/(\d);(\d)/g, function (str, p1, p2, offset, s) { return p1 + "," + p2; }));
Ответить с цитированием
  #3 (permalink)  
Старый 08.04.2016, 16:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

Dilettante_Pro,
alert("ab;01;41:cd;22;a0;0".replace(/(\d);(\d)/g, "$1,$2"));
Ответить с цитированием
  #4 (permalink)  
Старый 08.04.2016, 16:45
Интересующийся
Отправить личное сообщение для chatt Посмотреть профиль Найти все сообщения от chatt
 
Регистрация: 08.04.2016
Сообщений: 19

Сообщение от рони Посмотреть сообщение
Dilettante_Pro,
alert("ab;01;41:cd;22;a0;0".replace(/(\d);(\d)/g, "$1,$2"));
Спасибо, просто и надежно. В отличие от первого варианта, заменило все, а не первые три ; между цифрами.
Ответить с цитированием
  #5 (permalink)  
Старый 08.04.2016, 16:45
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

рони,
Это я про запас
Ответить с цитированием
  #6 (permalink)  
Старый 08.04.2016, 16:53
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

chatt,
Сообщение от chatt
В отличие от первого варианта, заменило все, а не первые три ; между цифрами
Да, что-то функция местами пробуксовывает...
Ответить с цитированием
  #7 (permalink)  
Старый 08.04.2016, 16:55
Интересующийся
Отправить личное сообщение для chatt Посмотреть профиль Найти все сообщения от chatt
 
Регистрация: 08.04.2016
Сообщений: 19

Засек, что оба кода не работают в случае трех цифр подряд 1;2;4 дают
1,2;4
Приходится дважды выполнять функцию.
Ответить с цитированием
  #8 (permalink)  
Старый 08.04.2016, 17:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

chatt,
alert("1;2;4ab;01;41:cd;22;a0;0".replace(/(\d);(?=\d)/g, "$1,"));
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Количество дней между датами Intrerio Элементы интерфейса 7 20.10.2015 15:11
Центрирование среднего блока между двумя float Siend (X)HTML/CSS 3 14.09.2015 14:08
Переход между страницами без перезагрузки sas135 Events/DOM/Window 1 26.07.2015 17:27
Связанные между собой данные при передачи по GET zhurchik Общие вопросы Javascript 8 19.03.2015 16:08
Промежуток времени между датами Octane Общие вопросы Javascript 16 02.12.2014 02:00