1 | ;
|
2 |
|
3 | /**
|
4 | * @param {string} value
|
5 | * @returns {number|null}
|
6 | */
|
7 | module.exports = (value) => {
|
8 |
|
9 | value = value.replace(/^[^0-9\-–+]*/, ''); // replace all non numbers and non sign from the front
|
10 | value = value.replace(/^–/, '-'); // replace long dash fot minus
|
11 |
|
12 | const minus = value.indexOf('-') === 0;
|
13 |
|
14 | value = value.replace(/[^0-9.,]/g, ''); // replace all non-number and non-dots and non-comma characters
|
15 | value = value.replace(/,/g, '.'); // all comma to dots
|
16 | value = value.replace(/\.(?=.*\.)/g, ''); // remove all dots but the last one
|
17 |
|
18 | if (value.trim() === '') {
|
19 | return null;
|
20 | }
|
21 |
|
22 | if (minus) {
|
23 | value = `-${value}`;
|
24 | }
|
25 |
|
26 | return parseFloat(value);
|
27 | };
|