Подтвердить что ты не робот

Регулярные выражения Javascript - замена нечисловых символов

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

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

Этот простой фрагмент заменит все, что не является числом ни с чем.

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

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

4b9b3361

Ответ 1

Вы избежали периода? var.replace(/[^0-9\.]+/g, '');

Ответ 2

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

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

This is a test. 0.9, 1, 2, 3 станет .0.9123.

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

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

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

Ответ 3

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

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

Ответ 4

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

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

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

Ответ 5

Если вы не хотите поймать IP-адрес вместе с десятичными знаками:

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

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

Ответ 6

Как это сделать:

var numbers = str.gsub(/[0-9]*\.?[0-9]+/, "#{0} ");

Ответ 7

Слабая и короткая встроенная замена нецифровых символов в текстовом поле ASP.Net:

 <asp:TextBox ID="txtJobNo" runat="server" class="TextBoxStyle" onkeyup="this.value=this.value.replace(/[^0-9]/g,'')" />

Измените часть регулярного выражения так, как вам было нужно. Многие и многие люди жалуются на то, что курсор идет прямо до конца при использовании клавиш со стрелками, но люди склонны справляться с этим, не замечая его, например, стрелка... стрелка... стрелка... ладно, тогда... backspace back space, введите новые символы.

Ответ 8

есть много правильных ответов, просто указывая, что вам может понадобиться также учитывать отрицательные знаки. "\-" добавить это к любому существующему ответу, чтобы разрешить отрицательные числа.

Ответ 9

Вот несколько типов классов ввода jQuery, которые я использую:

$("input.intgr").keyup(function (e) { // Filter non-digits from input value.
    if (/\D/g.test($(this).val())) $(this).val($(this).val().replace(/\D/g, ''));
});
$("input.nmbr").keyup(function (e) { // Filter non-numeric from input value.
    var tVal=$(this).val();
    if (tVal!="" && isNaN(tVal)){
        tVal=(tVal.substr(0,1).replace(/[^0-9\.\-]/, '')+tVal.substr(1).replace(/[^0-9\.]/, ''));
        var raVal=tVal.split(".")
        if(raVal.length>2)
            tVal=raVal[0]+"."+raVal.slice(1).join("");
        $(this).val(tVal);
    } 
});

intgr позволяет использовать только числовые - как и другие решения.

nmbr допускает только положительный/отрицательный десятичный знак. Отрицательный должен быть первым символом (вы можете добавить "+" в фильтр, если вам это нужно), strips -3.6.23.333 to -3.623333

Я помещаю nmbr, потому что мне надоело искать способ сохранить только 1 десятичную и отрицательную в 1-й позиции