Javascript регулярное целое число с десятичным - PullRequest
0 голосов
/ 29 апреля 2020

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

Разрешить вводить до 1 десятичного знака и, если я начну с целого числа 0; следующий должен быть десятичным, иначе любое другое введенное число удалит 0 (целое число)

Регулярное выражение, которое я предоставил, равно /(^$)|(^[0-9]+(\.([0-9]{1})?)?$)/, оно принимает 1 десятичное место, но я не могу получить оставшиеся часть. Любая помощь, пожалуйста?

Редактировать 1 ----

пропущенные числа -> 1,3

4,5

0,4

Неудачные номера ---- >

004

Если число начинается с 0, следующий символ должен быть только десятичным, например,

0.5 - пропуск

005 - сбой

Ответы [ 3 ]

0 голосов
/ 29 апреля 2020

Попробуйте это регулярное выражение:

^([0]{1}(\.[0-9]+))$|^([1-9]{1}|[1-9][0-9]+)$

РЕГУЛИРУЕМЫЙ РЕГЕКС: Теперь я настроил регулярное выражение в соответствии с требованиями: все числа, начинающиеся с 0, ДОЛЖНЫ следовать за запятой, например, 0,2 или 0,0002 это принятый. 02 или 00002 НЕ принимаются

0 голосов
/ 01 мая 2020

ОК, вы хотите найти целое число не начиная с 0, а найти десятичное число? Ваш код: /(^$)|(^[0-9]+(\.([0-9]{1})?)?$)/

Случай 1: целое число [1-9]\d*

Случай 2: десятичное число

//match 5.0
patt = \d+\.\d+

//Match 5.1xxxx, 5.2xxx, etc.
patt = \d+\.[1-9]\d*

//match 5.0xxx
patt = \d+\.0\d+

//combine all of them
patt = ([1-9]\d*|\d+\.[1-9]\d*|\d+\.0\d+)

//Final
patt = /(^$)|(([1-9]\d*|\d+\.[1-9]\d*|\d+\.0\d+)?$)/

Я объясню некоторую схему выше:

\d == [0-9]     //match 1 character between 0 and 9
\d* == \d{0,}   //match 0 or more character
\d+ == \d{1,}   //match at least one character
0 голосов
/ 29 апреля 2020

попробуйте это:

^ ([1-9] + \ d *.? \ D?) | ^ (0. \ d)

Если нет, посмотрите комментарии и попробуйте чтобы лучше проиллюстрировать

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