Как я могу написать регулярное выражение для форматирования французского числа? (пробел в качестве разделителя тысяч, запятая в качестве десятичного разделителя)

У меня есть функция JQuery, которая отображает сумму в поле ввода текста. Очень просто... Однако это французское приложение, и я пытаюсь создать регулярное выражение для французского форматирования чисел (пробел как разделитель тысяч, запятая как десятичный разделитель).

Я пробовал несколько способов ... и последняя попытка была .replace(/(\d)(?=(?:\d{3})+(?:$))/g, '$1 ');, но она не дает пробела в качестве разделителя тысяч и десятичного разделителя запятой. Заранее благодарю за любую помощь!


person nadir    schedule 12.08.2012    source источник
comment
Не могли бы вы привести пример формата источника/назначения, чтобы мы могли увидеть ожидаемое поведение?   -  person Joachim Isaksson    schedule 12.08.2012
comment
Конечно Иоахим! ВХОД = 120500,55 ВЫХОД = 120 500,55 Спасибо!   -  person nadir    schedule 12.08.2012


Ответы (1)


Вы можете изменить строку, а затем попробовать replace(/(\d{3})/g, "$1 "), а затем снова изменить. Вот jsFiddle.

ПРИМЕЧАНИЕ. Метод reverse, используемый в скрипте, взят из этот вопрос.

ОБНОВЛЕНИЕ

Возможно, вам придется сначала разбить строку на целые числа и дробные части, выполнить описанное выше преобразование и снова собрать ее вместе с запятой (при необходимости). Возможно, это уродливее того, что вы ищете, но я не мог придумать чисто регулярное выражение. Я обновил jsFiddle соответственно.

person mhusaini    schedule 12.08.2012
comment
Я думаю, что это не учитывает десятичный разделитель. - person mhusaini; 12.08.2012
comment
Спасибо за этот первый ответ mhusaini, но он не ставит запятую в качестве десятичного разделителя + я уверен, что можно сделать что-то проще - person nadir; 12.08.2012
comment
Я обновил ответ, чтобы учесть запятую в качестве десятичного разделителя. Возможно, есть более простое решение, но поскольку вам нужно захватить несколько наборов из трех цифр, а первый набор может быть меньше трех цифр, мне трудно придумать одно регулярное выражение, которое может все это сделать. - person mhusaini; 12.08.2012