Im пытается отформатировать мое значение, принимающее только цифры, а также замену запятой на точку, но я не могу фигурировать вместо запятой.regex и заменить строку
Пример:
"4,82 €".replace(/[^\d\,]/g, '')
Expeted Значение: 4,82
Im пытается отформатировать мое значение, принимающее только цифры, а также замену запятой на точку, но я не могу фигурировать вместо запятой.regex и заменить строку
Пример:
"4,82 €".replace(/[^\d\,]/g, '')
Expeted Значение: 4,82
Попробуйте это: '4,82 €'.replace(/[^0-9,]/g, '').replace(/,/g, '.');
Кроме того, вам не нужно бежать ,
. Он не имеет зарезервированное значение в regex
Try обработки этого через два отдельных выражений, один для удаления и другое, чтобы выполнить вашу замену:
Это может выглядеть как на картинке ниже выражение:
// Replaces all non-digits and commas /[^\d,]/ and replaces commas /,/
input.replace(/[^\d,]/g, '').replace(/,/g,'.`');
Пример
// Replace any non-digit or commas and then replace commas with periods
console.log("4,82 € -> " + "4,82 €".replace(/[^\d\,]/g, '').replace(/,/g,'.'))
// If you want to allow periods initially, then don't remove them
console.log("4.82 € -> " + "4.82 €".replace(/[^\d\,.]/g, '').replace(/,/g,'.'))
Проблема, если пользователь вставляет точку вместо запятой ? Он будет удалять точку –
Если вы ожидаете этого, тогда вы можете обработать его при первой замене: 'input.replace (/ [^ \ d,.]/G, '') .replace (/, ./) g, '. '');'. В принципе игнорировать замену периодов при первом удалении и затем заменять, как обычно. Я добавил пример, демонстрирующий этот подход. –
Но есть некоторые проблемы, если вы положили «6,42» ».замените (/ [^ \ d,.]/g, '') .replace (/,./ g, '.'), результат becimes "6.2", это удаление десятичных знаков –
Вы почти правы, просто пропустили одну маленькую вещь.
Ваше регулярное выражение
[^ \ d \,]
будет заменить только один нецифры или запятых и не все.
Изменить ваше регулярное выражение для
[^ \ d \,] +
как этот
"4,82 €" .Привернуть (/ [^ \ d \,] +/г, '')
и он будет работать
Конечно, он не заменит его точкой, потому что в вашем коде нет точек. – gcampbell
Ваше регулярное выражение соответствует всему, что не является цифрой или запятой, поэтому вы заменяете '' 'ничем. Но где замена '' '' .'? – ClasG
'4,82 €" .replace (/ [^ \ d \,] +/g, '') .replace (/, /, '.') ' – anubhava