26.02.2010, 13:24
|
Аспирант
|
|
Регистрация: 18.02.2010
Сообщений: 90
|
|
Помогите с регуляркой
никак не получается сделать регулярку со следующими условиями:
-оставлять только числа, запятую и точку
-если точка или запятая уже была, следующую удалять
наваял это
var reg = /[^0-9\.\,]/g;
var result = str.replace(reg, "");
а вот как оставлять только одну уточку не знаю(
|
|
26.02.2010, 13:43
|
Новичок на форуме
|
|
Регистрация: 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.
|
|
26.02.2010, 18:13
|
Аспирант
|
|
Регистрация: 18.02.2010
Сообщений: 90
|
|
не вышло, сейчас попробуй найти как определять последний введенный символ
|
|
26.02.2010, 18:19
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от tazododu
|
не вышло
|
Что не вышло?
Сообщение от tazododu
|
сейчас попробуй найти как определять последний введенный символ
|
Че?
|
|
26.02.2010, 18:53
|
|
Профессор
|
|
Регистрация: 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.
|
|
26.02.2010, 19:17
|
|
Профессор
|
|
Регистрация: 03.04.2009
Сообщений: 1,263
|
|
alert('adf 23.12,45 kjk .dll. ,lll,'.replace(/[^0-9,.]+/g,'').replace(/(\.[^.]*)\.|(,[^,]*),/g,'$1$2'))
и?
|
|
26.02.2010, 19:43
|
|
Профессор
|
|
Регистрация: 15.12.2009
Сообщений: 742
|
|
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
|
|
26.02.2010, 20:05
|
|
Профессор
|
|
Регистрация: 03.04.2009
Сообщений: 1,263
|
|
alert('adf 23.12,45 kjk .dll. ,lll,v...,,'.replace(/[^0-9,.]+/g,'').replace(/(\.[^.]*)?\./g,'$1').replace(/(,[^,]*)?,/g,'$1'))
|
|
26.02.2010, 20:23
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
callback всё-таки лучше, чем три replace.
|
|
26.02.2010, 20:30
|
|
Профессор
|
|
Регистрация: 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.
Причина: ТС хотел немного не то
|
|
|
|