что мне не хватает в этом RegEx? - PullRequest
1 голос
/ 27 июля 2010

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

допустимое # от 0 до 99,9 (где допускается только одна десятичная цифра), например, 3,45 недопустимо.

Итак, пусто в порядке, любое целое число от 0 до 99 в порядке, и разрешено десятичное значение.

Пока у меня есть это, но он позволяет передавать значения типа 3.45:

$^|$[0-9][0-9]?^|$[0-9][0-9]?.[0-9]^

Ответы [ 5 ]

9 голосов
/ 27 июля 2010

Я вижу две проблемы:

  • Вы перепутали ^ и $.
  • Ваша десятичная точка должна экранироваться \..
4 голосов
/ 27 июля 2010

Марк уже сказал, что не так с твоим выражением.Вот еще один способ, как вы могли бы написать это:

^(\d\d?(\.\d)?)?$

Объяснение:

  • ^ соответствует началу строки
  • (...)? делаетнеобязательное целое число
  • $ соответствует концу строки
  • \d\d? соответствует одной или двум цифрам (? делает второй необязательным)
  • (\.\d)? соответствует точке . и цифре (? делает это необязательным)
1 голос
/ 27 июля 2010

Я никогда не использовал JavaScript, но это должно сработать ...

^[0-9][0-9]?(?:\.[0-9])?$
0 голосов
/ 27 июля 2010

Другой вариант -

/^\d{0,2}(\.\d)?$/

, который будет принимать числа, подобные .3, если таковые будут разрешены.

0 голосов
/ 27 июля 2010

Перепишите ваше регулярное выражение как:

^$|^[0-9][0-9]?$|^[0-9][0-9]?\.[0-9]$

Но лучше использовать Феликса Кинга.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...