2016-07-08 5 views
-2

Im пытается отформатировать мое значение, принимающее только цифры, а также замену запятой на точку, но я не могу фигурировать вместо запятой.regex и заменить строку

Пример:

"4,82 €".replace(/[^\d\,]/g, '') 

Expeted Значение: 4,82

+0

Конечно, он не заменит его точкой, потому что в вашем коде нет точек. – gcampbell

+0

Ваше регулярное выражение соответствует всему, что не является цифрой или запятой, поэтому вы заменяете '' 'ничем. Но где замена '' '' .'? – ClasG

+1

'4,82 €" .replace (/ [^ \ d \,] +/g, '') .replace (/, /, '.') ' – anubhava

ответ

0

Попробуйте это: '4,82 €'.replace(/[^0-9,]/g, '').replace(/,/g, '.');

Кроме того, вам не нужно бежать ,. Он не имеет зарезервированное значение в regex

0

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,'.'))

+0

Проблема, если пользователь вставляет точку вместо запятой ? Он будет удалять точку –

+0

Если вы ожидаете этого, тогда вы можете обработать его при первой замене: 'input.replace (/ [^ \ d,.]/G, '') .replace (/, ./) g, '. '');'. В принципе игнорировать замену периодов при первом удалении и затем заменять, как обычно. Я добавил пример, демонстрирующий этот подход. –

+0

Но есть некоторые проблемы, если вы положили «6,42» ».замените (/ [^ \ d,.]/g, '') .replace (/,./ g, '.'), результат becimes "6.2", это удаление десятичных знаков –

0

Вы почти правы, просто пропустили одну маленькую вещь.

Ваше регулярное выражение

[^ \ d \,]

будет заменить только один нецифры или запятых и не все.

Изменить ваше регулярное выражение для

[^ \ d \,] +

как этот

"4,82 €" .Привернуть (/ [^ \ d \,] +/г, '')

и он будет работать

Смежные вопросы