#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}$
Обратите внимание, что я тоже использую повторение, но я привожу два аргумента. Первый аргумент-минимальное количество совпадений предыдущего токена, а второй аргумент-максимальный. Таким образом, мы можем очень четко указать точное количество повторений, которое мы ожидаем.