2014-02-21 3 views
1
$('#target').val($('#target').val().replace(/[^\d]/g, "")); 

Я использую вышеуказанный код, чтобы оставить только числовые символы во входном значении. Я также хотел бы разрешить «+» и «-».jquery regex заменить не числовые символы, но разрешить плюс

Как изменить регулярное выражение, чтобы это разрешить?

Помощь высоко ценится

ответ

1

Помещенный - и + в классе символов.

$('#target').val($('#target').val().replace(/[^-+\d]/g, "")); 
+0

спасибо вам поздно вечером за мой мозг для правильной работы здесь –

0

FWIW Я использую пару входных классов, контролируемую с JQuery:

<input class="intgr"> 
<input class="nmbr"> 

$("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); 
    } 
}); 

времени интегрирования полосой все нечисловая

NMBR принимает +, -, . и 0-9. Остальная часть строки лишается всех, кроме 0-9, и первой . Если вы в порядке с + и - находятся где угодно, решение Bamar идеально, короткое и сладкое. Мне нужно было +/- быть только в первой позиции символа, если вообще, и только один . (т.е. выйти за пределы первого периода, так что 2.5.9 будет 2.59)

Смежные вопросы