Функция replace, на работает со знаком запятая в кирилице
Столкнулся с проблемой, что создав правило замены запятой на точку функцией replace оно отлично работает с знаками латиницы, но при этом игнорирует кириллицу. Само выражение выглядит так:
.replace(/[^[+-]?\d+\.?\d*,]/g, '',[/,/, '.'])
Как его правильно дополнить и вообще возможно ли это, чтоб замена происходила и с знаком запятая в кириллице?
Ответы (1 шт):
Вот. Всё проще :) А если первым аргументом использовать именно регулярку, как тип, а не строку, то чтобы кириллица отрабатывала, надо флаг 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(',', '.'));