Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите составить регулярное выражение для числа с плавающей точкой (https://javascript.ru/forum/misc/25490-pomogite-sostavit-regulyarnoe-vyrazhenie-dlya-chisla-s-plavayushhejj-tochkojj.html)

boomrest 07.02.2012 08:19

Помогите составить регулярное выражение для числа с плавающей точкой
 
var pattern=/[^\d\.]/g; // НЕ цифры и НЕ точки
event.value = event.value.replace(pattern,''); // Если соответствует - удаляется


Код не позволяет вводить любые символы кроме цифр и точек. При таком паттерне я могу вводить сколько угодно цифр и точек. А надо, чтобы точка была одна. (проверка ввода числа с плавающей точкой)
Спасибо.

monolithed 07.02.2012 08:53

Цитата:

Сообщение от boomrest
event.value

для чего это?

<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>

<input />

<script>
$('input').bind('input keyup change', function()  {
    var value = this.value;

    if (/^\.|\d+\..*\./.test(value))
        this.value = value.slice(0,-1);                         
});
</script>

boomrest 07.02.2012 10:07

Цитата:

Сообщение от monolithed
для чего это?

Перехват события

Можно без jQuery? Ваш код запрещает ввод более одной точки, но ввод других символов, кроме цифр разрешает.

Вот весь код:

<script type="text/javascript">
function tableWalk(event) {
var pattern=/[^\d\.]/g; // Только цифры и точка
event.value = event.value.replace(pattern,'');}
</script>
<input type='text' name='zapis' size='10' onkeyUp='return tableWalk(this);' />



Поправьте плиз паттерн, чтобы больше 1 точки нельзя было вводить. Или подскажите свой вариант скрипта.
Спасибо

monolithed 07.02.2012 10:28

Цитата:

Сообщение от boomrest
Перехват события

Это не перехват события, а бред какой-то. Кто вам сказал что у event есть свойство value?
Цитата:

Сообщение от boomrest
Поправьте плиз паттерн, чтобы больше 1 точки нельзя было вводить.

<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>

<input />

<script>
$('input').bind('input keyup change', function()  {
    var value = this.value;

    if (/^\.|\d+\..*\.|[^\d\.{1}]/.test(value))
        this.value = value.slice(0,-1);                         
});
</script>


Цитата:

Сообщение от boomrest
Можно без jQuery?

У меня не так много свободного времени чтобы делать кроссбраузерное решение вашей задачи

Lobezki 25.02.2015 11:17

Здравствуйте! Не удаётся добавить условие: мин 1, макс 4 символа до точки.

if (/^\.|\d{1,4}\..*\.|[^\d\.{1}]/.test(value))


Часовой пояс GMT +3, время: 19:07.