Тема: regular expression Замінити все окрім цифр і однієї крапки

Як замінити все окрім цифр і однієї крапки на пустоту

"abc165.554*2.3.4.5#.$...*%".replace(/([^0-9.]+(\.[^0-9]+)?)/g, '');

Маю рядок
"abc165.554*2.3.4.5#.$...*%"

Після заміни хочу отримати
165.5542345

проблема в такій частині виразу [^0-9.] - я не знаю як вказати що це лише одна крапка.

Як зробити вираз "замінити все окрім цифр і однієї крапки" ?

Подякували: 221VOLT1

2

Re: regular expression Замінити все окрім цифр і однієї крапки

Працює в Хромі:

"abc165.554*2.3.4.5#.$...*%".replace(/([^0-9.])|(?<=^.*\..*)\./g, '');
Подякували: Betterthanyou, P.Y., fed_lviv, leofun014

3

Re: regular expression Замінити все окрім цифр і однієї крапки

koala написав:

Працює в Хромі:

"abc165.554*2.3.4.5#.$...*%".replace(/([^0-9.])|(?<=^.*\..*)\./g, '');

Вельми дякую!

4

Re: regular expression Замінити все окрім цифр і однієї крапки

Якщо орієнтуватися на більш примітивні регулярки, заміну можна зробити в декілька етапів:
1) Замінюємо все, крім цифр і крапок, на пустоту.
2) Замінюємо першу крапку на інший символ (наприлад, на !) — регулярка має бути без параметру g.
3) Замінюємо всі крапки на пустоту.
4) Замінюємо ! на крапку.

Подякували: Betterthanyou, pluszz, 221VOLT, leofun014

5 Востаннє редагувалося leofun01 (28.01.2020 22:37:54)

Re: regular expression Замінити все окрім цифр і однієї крапки

function makeReal(s) {
    var s1 = s.match(/([0-9\.])+/g, '$1').join('');
    var ss = s1.match(/[0-9]+/g, '$1');
    return ss[0] + '.' + ss.slice(1).join('');
};
makeReal('abc165.554*2.3.4.5#.$...*%');

Працює всюди.

Подякували: 221VOLT, Betterthanyou2

6

Re: regular expression Замінити все окрім цифр і однієї крапки

Але ж питання було саме через regexp. Якщо через regexp і ще щось, то можна багато чого ще зробити.

Подякували: leofun011

7

Re: regular expression Замінити все окрім цифр і однієї крапки

Прихований текст

https://replace.org.ua/uploads/images/931/34fc98a7d5bc500ec89a86dc23061c9c.jpg

Подякували: 0xDADA11C7, 221VOLT, leofun01, Betterthanyou, /KIT\5