регулярное выражение int или float - PullRequest
3 голосов
/ 04 августа 2010

Мое регулярное выражение не будет работать с однозначным числом

/^[0-9]{1,7}\.?[0-9]{1,2}$/

Мне нужно, чтобы оно работало с беззнаковыми числами:

1 (single digit numbers, without fractions) - currently it fails on them
1.0; 0.31 (floating point numbers)

Число перед дробью может быть 1-7 цифрами;после дроби 1-2 цифры.

Спасибо!

Ответы [ 2 ]

6 голосов
/ 04 августа 2010

Вы указываете, что должны быть 1-7 цифр, затем необязательный десятичный знак, а затем еще 1-2 цифры.Попробуйте:

/^[0-9]{1,7}(?:\.[0-9]{1,2})?$/

Обратите внимание, что это не допускает конечных десятичных разрядов (то есть "1.")Если вы хотите разрешить это, это должно работать:

/^[0-9]{1,7}(?:\.[0-9]{0,2})?$/
1 голос
/ 04 августа 2010

Сделать десятичную точку и цифры после нее необязательными.например,

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

Таким образом, вы можете иметь 1 - 7 цифр или 1 - 7 цифр, за которыми следует десятичная точка, за которой следуют 1 или 2 цифры , но если у вас были цифры, за которыми следовала десятичная точка, но не осталось цифр, которые были бы недействительными.

...