Ответ 1
Вы избежали периода? var.replace(/[^0-9\.]+/g, '');
Это работает:
var.replace(/[^0-9]+/g, '');
Этот простой фрагмент заменит все, что не является числом ни с чем.
Но десятичные числа тоже реальны. Итак, я пытаюсь выяснить, как включить период.
Я уверен, что это очень просто, но мои тесты не работают.
Вы избежали периода? var.replace(/[^0-9\.]+/g, '');
Замена чего-то, что не является числом, немного сложнее, чем замена того, что является числом.
Те, кто предлагает просто добавить точку, игнорируют тот факт, что. также используется как период, поэтому:
This is a test. 0.9, 1, 2, 3
станет .0.9123
.
Конкретное регулярное выражение в вашей проблеме будет зависеть от цели. Если в вашей строке есть только один номер, вы можете сделать это:
var.replace(/.*?(([0-9]*\.)?[0-9]+).*/g, "$1")
Это находит первое число и заменяет всю строку согласованным номером.
Попробуйте следующее:
var.replace(/[^0-9\\.]+/g, '');
Попробуйте следующее:
var.replace(/[0-9]*\.?[0-9]+/g, '');
Это соответствует только десятичным знакам (например, "1", "1.0", ".5", но не "1.0.22" )
Если вы не хотите поймать IP-адрес вместе с десятичными знаками:
var.replace(/[^0-9]+\\.?[0-9]*/g, '');
Которое будет ловить только цифры с одним или нулевым периодом
Как это сделать:
var numbers = str.gsub(/[0-9]*\.?[0-9]+/, "#{0} ");
Слабая и короткая встроенная замена нецифровых символов в текстовом поле ASP.Net:
<asp:TextBox ID="txtJobNo" runat="server" class="TextBoxStyle" onkeyup="this.value=this.value.replace(/[^0-9]/g,'')" />
Измените часть регулярного выражения так, как вам было нужно. Многие и многие люди жалуются на то, что курсор идет прямо до конца при использовании клавиш со стрелками, но люди склонны справляться с этим, не замечая его, например, стрелка... стрелка... стрелка... ладно, тогда... backspace back space, введите новые символы.
есть много правильных ответов, просто указывая, что вам может понадобиться также учитывать отрицательные знаки. "\-"
добавить это к любому существующему ответу, чтобы разрешить отрицательные числа.
Вот несколько типов классов ввода 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-й позиции