2013-05-09 4 views
4

Я пытаюсь создать регулярное выражение, которое позволит как отрицательные, так и положительные десятичные числа со следующими правилами.RegEx- Проверка отрицательных и положительных десятичных чисел

  1. не может быть больше, чем 2 цифры после десятичной запятой
  2. Десятичная точка является необязательным
  3. Общая длина, включая десятичную точку, не должна превышать 12 обугленного
  4. , если нет десятичной точки не существует, максимальная длина должна не превышать 9 ч.

Может ли кто-нибудь помочь мне? Заранее большое спасибо.

+0

Будет ли граф минус в качестве символа в строке? Что, если есть более двух десятичных знаков, но все 0s? –

+0

Никакой минус не будет считаться в пределах 12 лимитов. более 2 десятичных знаков не допускаются, даже если они равны 0 с. спасибо :-) –

ответ

11

Проверьте это регулярное выражение.

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

Это регулярное выражение говорит

  • знак является необязательным
  • по меньшей мере, один и не более 9 цифр, как целая часть
  • если десятичная точка есть, по крайней мере, один и не более двух цифр после него ,
+0

Спасибо :-) он отлично работает. –

+0

Эта ссылка помогла мне написать и протестировать это регулярное выражение. Http://erik.eae.net/playground/regexp/regexp.html –

+0

можете ли вы сослаться на хороший учебник по регулярному выражению? – muneebShabbir

3

Это довольно просто, поскольку 12 - 9 == 3 для двух десятичных знаков + точка.

var re = new RegExp('^-?\\d{1,9}(\\.\\d{1,2})?$'); 

разрешает

  • -123456789
  • -123456789.1
  • -123456789.12
  • 0
  • 0.12

, но не будет принимать

  • более 12 МОКС
  • 123. точка без десятичных знаков
  • 123.123 более двух знаков после запятой
  • . или .12 (отсутствует 0)
+0

Я думаю, что вам не хватает двойных обратных косых черт в регулярном выражении. –

+0

@ Qantas94Heavy Действительно, спасибо. –

+0

Спасибо, но он принимает значение больше 12 символов, всего 12345678912.00 –

1

Мое собственное регулярное выражение:

var rgx = /^(-{1}?(?:([0-9]{0,10}))|([0-9]{1})?(?:([0-9]{0,9})))?(?:\.([0-9]{0,3}))?$/; 
Смежные вопросы