Сопоставление шаблонов регулярных выражений для десятичной дроби

#javascript #regex

Вопрос:

Мне нужно сопоставить шаблон для проверки . Я хочу сопоставить десятичное число, в котором числовая часть содержит до 7 цифр, а после десятичной-до 9 чисел. Допустимыми шаблонами являются :

 1.8 1234567.123456789 .8 0.7 12.78  

Я пытался использовать» ^[0-9]{7}.[0-9]{9}$ «, но он работает не так, как ожидалось

Ответ №1:

Аргумент повторения, указанный в фигурных скобках, предназначен для сопоставления точного количества совпадений предыдущего токена. Ваше регулярное выражение пытается соответствовать РОВНО 7 цифрам ( {7} ), за которыми следуют РОВНО 9 цифр ( {9} ). Вы также используете подстановочный знак точки, чтобы соответствовать десятичной точке, которую вы должны избегать с помощью косой черты ( . ), поскольку вы намерены соответствовать буквальному символу точки, а не любому символу.

Судя по вашим примерам, кажется, что вы хотите сопоставить от 0 до 7 цифр до десятичной точки, а затем от 1 до 9 после. Подходящим регулярным выражением для этого было бы:

 ^[0-9]{0,7}.[0-9]{1,9}$  

Обратите внимание, что я тоже использую повторение, но я привожу два аргумента. Первый аргумент-минимальное количество совпадений предыдущего токена, а второй аргумент-максимальный. Таким образом, мы можем очень четко указать точное количество повторений, которое мы ожидаем.