регулярное выражение заменяет значение, сохраняя только цифры и ограничивая количество знаков после запятой до 2 - PullRequest
0 голосов
/ 03 июля 2019

У меня есть следующий текст «2345dsds34.000», и я хочу следующее значение «234534.00».Я планирую сделать это с помощью регулярных выражений замены, но каким-то образом он не ограничивает десятичные разряды до 2.

Я использую это "2345dsds34.000".replace(/[^\d+(\.\d{1,2})$]/g, ''), но он продолжает давать мне 234534.000.Как я могу заставить его ограничить его до 2 десятичных знаков.

console.log("2345dsds34.000".replace(/[^\d+(\.\d{1,2})$]/g, ''))

Спасибо

Ответы [ 5 ]

0 голосов
/ 03 июля 2019

При использовании регулярных выражений с захватом скобок это будет выглядеть так

var regex = /(\d{4})[a-z]+(\d{2})\.(\d{2}).*/;
var input_chain = "2345dsds34.000";
var output = input_chain.replace(regex, "$1$2.$3");

console.log(output);

Каждая захватывающая скобка может быть ссылкой во второй части replace по номеру позиции с префиксом $

0 голосов
/ 03 июля 2019

Вы можете просто использовать

[^\d.]

enter image description here

let str = "2345dsds34.000"
let op = parseFloat(str.replace(/[^\d.]+/g, '')).toFixed(2)

console.log(op)
0 голосов
/ 03 июля 2019

Вы можете использовать toFixed JS Number function

Number( "2345dsds34.000".replace(/[^\d+(\.\d{1,2})$]/g, '') ).toFixed(2)
0 голосов
/ 03 июля 2019

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

enter image description here
Снимок с https://regex101.com/

Затем метод .replace() удаляет их. Это все, что он делает.

Поскольку вы не знаете, сколько дополнительных десятичных знаков у вас может быть ... Я предлагаю вам использовать parseFloat() и .tofixed(2).

Пожалуйста, посмотрите на эти две ссылки на документацию. ;)

var value = parseFloat("2345dsds34.000".replace(/[^\d+(\.\d{1,2})$]/g, '')).toFixed(2);
console.log(value);
0 голосов
/ 03 июля 2019

Вы можете просто вырезать последнюю цифру с помощью .slice(0, -1):

console.log("2345dsds34.000".replace(/[^\d+(\.\d{1,2})$]/g, '').slice(0, -1));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...