Регулярные выражения JavaScript - нечисловые символы Замены

Это работает:

var.replace(/[^0-9]+/g, '');  

Тот простой отрывок заменит что-либо, что не является числом ни с чем.

Но десятичные числа реальны также. Так, я пытаюсь выяснить, как включать период.

Я уверен, что это действительно просто, но мои тесты не работают.

61
задан Alan Moore 4 April 2010 в 09:24
поделиться

6 ответов

Вы избежали точки? var.replace (/ [^ 0-9 \.] + / G, '');

87
ответ дан 24 November 2019 в 17:18
поделиться

Замена того, что не числом, немного сложнее, чем замена того, что является числом.

Те, кто предлагает просто добавить точку, игнорируют тот факт, что. также используется как точка, поэтому:

Это тест. 0,9, 1, 2, 3 станет .0,9123 .

Конкретное регулярное выражение в вашей задаче во многом зависит от цели. Если в вашей строке есть только одно число, вы можете сделать это:

var.replace (/.*? (([0-9] * \.)? [0-9] +). * / G , "$ 1")

Это находит первое число и заменяет всю строку совпадающим числом.

8
ответ дан 24 November 2019 в 17:18
поделиться

Как насчет этого:

var numbers = str.gsub(/[0-9]*\.?[0-9]+/, "#{0} ");
0
ответ дан 24 November 2019 в 17:18
поделиться

Попробуйте следующее:

var.replace(/[^0-9\\.]+/g, '');
5
ответ дан 24 November 2019 в 17:18
поделиться

Попробуйте следующее:

var.replace(/[0-9]*\.?[0-9]+/g, '');

Это соответствует только действительным десятичным числам (например, «1», «1.0» , ".5", но не "1.0.22")

2
ответ дан 24 November 2019 в 17:18
поделиться

Если вы не хотите ловить IP-адрес вместе с десятичными цифрами:

var.replace(/[^0-9]+\\.?[0-9]*/g, '');

Который будет ловить только цифры с одним или нулем периодов

2
ответ дан 24 November 2019 в 17:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: