RegEx для числа, которое должно содержать десятичную точку - PullRequest
3 голосов
/ 25 апреля 2019

Я пытаюсь написать регулярное выражение для проверки десятичного числа.

  1. Число ДОЛЖНО содержать десятичную точку.
  2. Справа от десятичной точки должна быть одна цифра [0-9].
  3. Может быть не более 5 цифр слева от десятичной точки, но они не могут начинаться с нуля, если только сам по себе ноль.

Разрешено:

  • 0,1 (первая цифра может быть только нулем, если за ней следует десятичное место)
  • 10345.0 (не более 5 цифр слева от десятичного знака, справа от десятичного знака должна быть 1 цифра)

Не допускается:

  • 0 (без десятичного знака)
  • 10 (без десятичного знака)
    1. (номер справа от десятичного знака отсутствует)
  • . (без цифр по обе стороны от десятичного знака)
  • .1 (номер слева от десятичного знака отсутствует)

Это регулярное выражение проверяет, что стоит перед десятичным знаком

^(?:[1-9][0-9]{0,4}|0)$

Это регулярное выражение проверяет, что следует за десятичным знаком

^[0-9]{1}+$

Я просто не знаю, как объединить два так, чтобы десятичный знак был обязательным.

Как мне решить эту проблему?

Ответы [ 3 ]

5 голосов
/ 25 апреля 2019

Насколько мне известно, это работает

^(?:[1-9]\d{0,4}|0)\.\d$

Расширен

 ^                             # BOS
 (?:
      [1-9] \d{0,4}                 # 1-5 digits, must not start with 0
   |                              # or,
      0                             # 0
 )
 \. \d                         # decimal point and 1 digit
 $                             # EOS
0 голосов
/ 25 апреля 2019

Этот RegEx может проверять ваши входные данные:

^(\d{1,5}\.\d{1,})$

, и вы можете просто позвонить, используя $ 1 .

enter image description here

0 голосов
/ 25 апреля 2019

Это должно работать

const r = /^(?:[1-9]\d{0,4}|0)\.\d+/

const arr = ['0', '1', '1.2', '1.', '1.123', '0123.1', '123.123', '1234.1', '12345.12345678', '123456.123', '0.12'];

arr.forEach((val) => {
  console.log(val, r.test(val));
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...