Javascript.RU

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

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

наваял это
var reg = /[^0-9\.\,]/g;
var result = str.replace(reg, "");

а вот как оставлять только одну уточку не знаю(
Ответить с цитированием
  #2 (permalink)  
Старый 26.02.2010, 13:43
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Просмотра назад в JS нет, поэтому проще наверно callback-функцией
var str = 'adf 23.12,45 kjk';
var dotFound = false;
var result = str.replace(/[^0-9]/g, function(ch) {
    if ((ch == '.' || ch == ',') && !dotFound) {
        dotFound = true;
        return ch;
    }
    return '';
});
alert(result);

Последний раз редактировалось Kolyaj, 26.02.2010 в 18:18.
Ответить с цитированием
  #3 (permalink)  
Старый 26.02.2010, 18:13
Аспирант
Отправить личное сообщение для tazododu Посмотреть профиль Найти все сообщения от tazododu
 
Регистрация: 18.02.2010
Сообщений: 90

не вышло, сейчас попробуй найти как определять последний введенный символ
Ответить с цитированием
  #4 (permalink)  
Старый 26.02.2010, 18:19
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от tazododu
не вышло
Что не вышло?

Сообщение от tazododu
сейчас попробуй найти как определять последний введенный символ
Че?
Ответить с цитированием
  #5 (permalink)  
Старый 26.02.2010, 18:53
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

alert('adf 23.12,45 kjk .dll. ,lll,'.replace(/[^0-9,.]+/g,'').replace(/(\.[^.]*)?\./g,'$1').replace(/(,[^,]*)?,/g,'$1'));
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт

Последний раз редактировалось PeaceCoder, 26.02.2010 в 19:42.
Ответить с цитированием
  #6 (permalink)  
Старый 26.02.2010, 19:17
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

alert('adf 23.12,45 kjk .dll. ,lll,'.replace(/[^0-9,.]+/g,'').replace(/(\.[^.]*)\.|(,[^,]*),/g,'$1$2'))


и?
Ответить с цитированием
  #7 (permalink)  
Старый 26.02.2010, 19:43
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Сообщение от e1f
и?
переправил.
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
Ответить с цитированием
  #8 (permalink)  
Старый 26.02.2010, 20:05
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

alert('adf 23.12,45 kjk .dll. ,lll,v...,,'.replace(/[^0-9,.]+/g,'').replace(/(\.[^.]*)?\./g,'$1').replace(/(,[^,]*)?,/g,'$1'))
Ответить с цитированием
  #9 (permalink)  
Старый 26.02.2010, 20:23
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

callback всё-таки лучше, чем три replace.
Ответить с цитированием
  #10 (permalink)  
Старый 26.02.2010, 20:30
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

alert("aaa 2.3.1..2,4,5.,, k,j,k .dl4l. ,l,,,4,ll,v.,..,,".replace(/[^0-9,.]+/g,'').
    split('').reverse().join('').
    replace(/(?:\.|,)(?=.*(?:\.|\,))/g, '').
    split('').reverse().join(''))


Да, callback все же лучше
Кошмар, до чего доводит желание пользоваться регулярками

Последний раз редактировалось e1f, 26.02.2010 в 20:33. Причина: ТС хотел немного не то
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите с регуляркой ... motoroller Элементы интерфейса 1 23.11.2009 22:01
помогите с регуляркой Holod Общие вопросы Javascript 1 19.08.2009 12:02
Вырезать регуляркой greatilya Серверные языки и технологии 17 24.07.2009 18:00
помогите задать селектор! mkrylov jQuery 2 28.06.2009 20:34
Помогите с регуляркой... alexKniaz AJAX и COMET 0 03.11.2008 01:16