2010-08-04 3 views
3

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

/^[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 цифры.

Спасибо!

+1

«неподписанные» и «плавающие точки» являются внутренними для машины и не имеют ничего общего с их читаемым человеком представлением. – quantumSoup

ответ

6

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

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

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

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

В то же время второе выражение допускает номера с 8-9 цифрами. – quantumSoup

+1

@Air исправлено это. – Artefacto

1

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

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

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

Смежные вопросы