Функция replace, на работает со знаком запятая в кирилице

Столкнулся с проблемой, что создав правило замены запятой на точку функцией replace оно отлично работает с знаками латиницы, но при этом игнорирует кириллицу. Само выражение выглядит так:

.replace(/[^[+-]?\d+\.?\d*,]/g, '',[/,/, '.'])

Как его правильно дополнить и вообще возможно ли это, чтоб замена происходила и с знаком запятая в кириллице?


Ответы (1 шт):

Автор решения: Alex Sazonov

Вот. Всё проще :) А если первым аргументом использовать именно регулярку, как тип, а не строку, то чтобы кириллица отрабатывала, надо флаг u еще добавить. В общем фукция replace() принимает 2 аргумента. Первый - это либо регулярка, либо строка. Второй, это то, НА ЧТО ЗАМЕНИТСЯ любое вхождение из этой регуляки. Если у тебя регулярка точно правильная, то будет примерно так

let str = 'some string';
str.replace(/[^[+-]?\d+\.?\d*,]/gu, '.');

То есть всё, что подпадает под эту регулярку в строке str будет заменено на точку . Флаги - это вот те буквы в конце регулярного выражения. /regexp/gu. Флаг g означает продолжать искать дальше, даже если нашлось одно попадание. Флаг u означает обрабатывать кириллицу. i - игнорировать регистр. Вот тут можно подробнее почитать.

let str = 'asdasd, asda';

console.log(str.replace(',', '.'));

→ Ссылка