регулярное выражение для значения с плавающей точкой - PullRequest
0 голосов
/ 28 декабря 2011

Я хочу, чтобы мое текстовое поле имело только значение с плавающей запятой, и отфильтровываю любые символы и буквы алфавита. Ближайшее решение, которое я нашел:

jQuery(".sow-items .discovery_repeat input.hours").live("keyup", function(e) {       
    $(this).val($(this).val().replace(/[^\d]/, ''));       
});

, но оно также отфильтровывает десятичную точку.как исключить десятичную дробь из вышеуказанного фильтра или каких-либо новых предложений?

Ответы [ 4 ]

2 голосов
/ 28 декабря 2011

Попробуйте это:

jQuery(".sow-items .discovery_repeat input.hours").live("keyup", function(e) {       
    $(this).val($(this).val().replace(/[^\d.]/g, ''));       
});
1 голос
/ 28 декабря 2011
jQuery(".sow-items .discovery_repeat input.hours").live("keyup", function(e) {   
    var newVal = $(this).val().replace(/[^\d.]/, '').split(".");
    if ( newVal.length>2 ) newVal.length = 2; newVal.join("."); 
    $(this).val(newVal);       
});

@ Дейв Ньютон: только один . ..

1 голос
/ 28 декабря 2011

/\b[-+]?[0-9]*\.?[0-9]+\b/g или /^[-+]?[0-9]*\.?[0-9]+$/ должны сделать трюк, если только вы не хотите, чтобы числа типа "1.4E-15" были там.

http://www.regular -expressions.info / с плавающей точкой.html имеет несколько предложений для этого необычного случая.

0 голосов
/ 28 декабря 2011

Вы должны соответствовать либо не цифра, ни точка, а точка должна быть экранирована

jQuery(".sow-items .discovery_repeat input.hours").live("keyup", function(e) {       
    $(this).val($(this).val().replace(/[^\d]|[^\.]/, ''));       
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...