Помогите с регуляркой
никак не получается сделать регулярку со следующими условиями:
-оставлять только числа, запятую и точку -если точка или запятая уже была, следующую удалять наваял это 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, время: 23:32. |