Помогите с регуляркой
никак не получается сделать регулярку со следующими условиями:
-оставлять только числа, запятую и точку -если точка или запятая уже была, следующую удалять наваял это var reg = /[^0-9\.\,]/g; var result = str.replace(reg, ""); а вот как оставлять только одну уточку не знаю( |
Просмотра назад в 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);
|
не вышло, сейчас попробуй найти как определять последний введенный символ
|
Цитата:
Цитата:
|
alert('adf 23.12,45 kjk .dll. ,lll,'.replace(/[^0-9,.]+/g,'').replace(/(\.[^.]*)?\./g,'$1').replace(/(,[^,]*)?,/g,'$1'));
|
alert('adf 23.12,45 kjk .dll. ,lll,'.replace(/[^0-9,.]+/g,'').replace(/(\.[^.]*)\.|(,[^,]*),/g,'$1$2'))
и? |
Цитата:
|
alert('adf 23.12,45 kjk .dll. ,lll,v...,,'.replace(/[^0-9,.]+/g,'').replace(/(\.[^.]*)?\./g,'$1').replace(/(,[^,]*)?,/g,'$1'))
|
callback всё-таки лучше, чем три replace.
|
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 все же лучше :) Кошмар, до чего доводит желание пользоваться регулярками :) |
| Часовой пояс GMT +3, время: 17:19. |