Я работаю над парсером для счетов и нашел различные форматы валют. Вместо того, чтобы переопределять конкретный случай c для каждого счета-фактуры, я бы предпочел иметь общий шаблон, который работает для всех случаев, использующих замену Regex.
Примеры форматов ввода
2.578,20
2 354,20
234
234,256.20
234,205
246 548
244'056
26'155.25
12,20
13.33
Желаемый вывод
2578.20
2354.20
234
234256.20
234205
246548
244056
26155.25
12.20
13.33
Мой прогресс до сих пор
Пока мне удалось создать что-то, что почти работает /^(\d{0,3})?[\.\ ,']?(\d{0,3})([\.,](\d{0,2}))?/
со строкой замены $1$2.$4
Но это приводит к выводу
2578.20
2354.20
234.
234256.20
234205.
246548.
244056.
26155.25
.
1220. <---- WRONG
1333. <---- WRONG
Я могу жить с точкой в конце, как это работает для floatval () в PHP и возможно, и другие языки. Но последние два случая недействительны. Я знаю, что он соответствует первому (\d{0,3})
вместо (\d{0,2})
паттерна в конце. Но я не знаю, как это исправить ...