Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > регулярное выражение


Автор: Samotnik 27.9.2012, 12:37
Привет. 
Пытаюсь составить регулярку.
Нужна проверка: 
- Можно вводить только положительное число;
- Можно вводить как целое, так и дробное;
- Нельзя ввести просто 0;
- Если это целое, то нельзя ввести первым ноль, если это дробное, то оно может быть 0.1;

Получилось вот что:
Код

^[0-9]{0,5}(\.[0-9]{0,2}){0,1}$

Но, это не работает, если ввести просто ноль или несколько нулей
 smile 

Автор: Aliance 27.9.2012, 13:43
Лучше конечно просто проверку делать в 2 этапа, первым этапом проверяем на неравенство нулю, а вторым уже регуляркой. Но если нужно именно в регулдярку впихнуть, то что мешает [0-9]{0,5} заменить на [1-9]{1}[0-9]{1,4}

Автор: Sanchezzz 27.9.2012, 13:50
Код

'00000'.match(/^[0-9]{0,5}(\.[0-9]{0,2}){0,1}$/i);

Вернет вам
["00000", undefined]

Попробуйте приобразавать значение явно  в строку можно как + '' или .toString()

Автор: Aliance 27.9.2012, 14:03
Код

var re = /[1..9]{1}\d{0,4}(\.\d+)*/;
var ar = [000, 0, 0.1, 1, 1.2, 'ololo'];
for (var i in ar)​ {
    $('<p>').html(ar[i]+' -> '+re.test(ar[i])).appendTo(document.body);
}​

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)