Регулярка на дробные числа
Подскажите пожалуйста, мне надо регулярка, которая разрешала бы вводить только цифры и 1 точку, причем точка не может быть первым символом, и точка должна вводиться только одна.
Я вот пробовал, но точку можно ввести много раз и ее можно ввести первым символом. /[^\d.]/g И можно вводить как угодно: ....22222.2.2. Помогите пожалуйста |
\d+\.\d+
|
Не получилось =(
В отличие от моего варианта, тут получилось ввести: asdasd123......23. Может еще есть варианты? |
Значит вы не правильно что-то сделали, ибо моя регулярка работает:)
http://www.pcre.ru/eval/%5Cd%2B%5C.%...gfgfgfg.22323/ вот ссылка на неё |
Или может я что-то не так делаю?
<script>
function amounte(elem) {
var a = document.getElementById('a');
elem.value = elem.value.replace(/@^\d+\.\d+$@/, '');
// elem.value = elem.value.replace(/[^\.]/g, '');
// elem.value = elem.value.replace(/^-?\d+[\.|\,]?\d+$/, '');
if(elem.value >= 2)
a.innerHTML = "";
else
a.innerHTML = "Введите тираж от 2, тыс";
}
</script>
<p class="type1"> <input name="amount_" onkeyup="amounte(this)" /> Тираж, тыс <div id="a"></div> </p> |
Цитата:
|
Это как вариант.
Я подставлял Вашу регулярку, но она тоже не работает |
Она работает) это 100%) Я тебе скинул ссылку на конструктор, если не веришь)
Моно конеш пробельные символы ещё учесть ^\s*\d+\.\d+\s*$ |
Честно говоря у меня там вообще ничего не отобразилось. Пробывал в разных браузерах.
Но я вставляю свою регулярку и у меня не вводятся буквы, только цифры и точки. Потом вставляю Вашу и ввожу что хочу. Непонятно как-то. |
Может я не совсем правильно выразился, или Вы меня не корректно поняли.
У меня есть поле, и мне надо разрешить ввод только цифр и одной точки (во время ввода, на этапе ввода), |
замени в регулярке kobezzza \. на \.? и проблема с множеством точек уйдёт
и + на * -на вариант чисел типа .76 и 76. итого ^\d*\.?\d*$ |
проверяй этой регуляркой если не соответствует из введённого отсекай последнее ведённое. у тебя при вводе строка,что мешает вычислить длинну её и отсечь последнее если не соответствует регулярке?
|
Цитата:
alert(/\d+\.\d+/.test('asffg3.4fsf'))
А надо так: ^\d+\.\d+$ P.S. Aetae зря удалил свой пост. |
Подумал, что все и так тут вумные, разбирутся) А вон оно как.)
|
Попробую внести и свой вклад))))
Если я правильно понял топикстартера, то необходим разрешить в поле ввода цифры и разделителя дробной части с учетом запрета ввода разделителя в самом начале. <input name="amount_" onkeydown="amounte(event, this)" /> Тираж, тыс <div id="a"></div>
<script language="javascript">
function amounte(event, elem){
var kc = event.keyCode, v = elem.value, l = elem.value.length, cancel = false;
// Разрешаем Backspace (<--)
if(kc == 8) return;
// Проверям повторый ввод точки или запятой
if((kc == 110 || kc == 188 || kc == 190) && /(\.|\,)/.test(v)){
cancel = true;
}
// Разрешаем вводить символы: 0123456789.,
if(!((kc > 48 && kc < 58) || (kc > 95 && kc < 106) || kc == 110 || kc == 188 || kc == 190) || (l == 0 && (kc == 110 || kc == 188 || kc == 190))){
cancel = true;
}
if(cancel){ // Завершаем событие, символ не печатается в поле
if(event.preventDefault) event.preventDefault();
if(event.stopPropagation) event.stopPropagation();
event.cancelBubble = true;
event.returnValue = false;
return false;
}
}
</script>
|
| Часовой пояс GMT +3, время: 15:05. |