#javascript #jquery #regex #jquery-inputmask
Вопрос:
Привет всем, я пытаюсь создать маску для моих 2 полей ввода, в которых будут указаны широта и долгота.
Принято считать, что широта может быть положительным или отрицательным числом, и то же самое относится к долготе. Проблема в том, что я пытаюсь придумать регулярное выражение, которое может дать пользователю возможность сначала выбрать, будет ли оно положительным или отрицательным числом, а затем дать пользователю маску (-/ )XXX.XXXXXX.
Тем не менее, я не слишком близок к выводу, и поэтому я прошу некоторой помощи в достижении этой цели.
Я настроил JSFiddle из того, что у меня есть до сих пор, а это не так много, чтобы заархивировать свою цель.
$('.mask').inputmask({ regex: String.raw `^[-/*][0-9]{3}[.][0-9]{7} #javascript #jquery #regex #jquery-inputmask
Вопрос:
Привет всем, я пытаюсь создать маску для моих 2 полей ввода, в которых будут указаны широта и долгота. Принято считать, что широта может быть положительным или отрицательным числом, и то же самое относится к долготе. Проблема в том, что я пытаюсь придумать регулярное выражение, которое может дать пользователю возможность сначала выбрать, будет ли оно положительным или отрицательным числом, а затем дать пользователю маску (-/ )XXX.XXXXXX. Тем не менее, я не слишком близок к выводу, и поэтому я прошу некоторой помощи в достижении этой цели. Я настроил JSFiddle из того, что у меня есть до сих пор, а это не так много, чтобы заархивировать свою цель. });
Приведенный выше код работает для отрицательных чисел, но при вводе, скажем, 100, он просто сидит там, потому что он ждет, чтобы начать. Я думал, что добавление * it позволит ему ввести положительное число. Вышеизложенное должно позволить пользователю вводить данные в формате-XXX.XXXXXX ИЛИ XXX.XXXXXXX.
Мне все еще нужно выяснить, как также определить, когда первая часть (xxx.) состоит всего из 1 или 2 цифр вместо 3, что заставляет пользователя ставить 0 перед указанными цифрами цифр.
Поэтому допустимый ввод будет выглядеть так:
-2,984593 вместо -002,984593
-74.192822 вместо -074.192822
-102.738631
7.653721 вместо 007.653721
10.746633 вместо 010.746633
110.938365
Как это можно отформатировать, чтобы работать так, как мне нужно?
Ответ №1:
Вы можете просто сделать тире необязательным:
^-?d{3}.d{7}$
Я взял на себя смелость провести рефакторинг вашего шаблона регулярных выражений ( [0-9]
-> > d
, [.]
-> > .
).
Что касается того, чтобы первая часть состояла из одной или двух цифр, вы можете использовать:
^-?d{1,3}.d{7}$
Комментарии:
1. Ни один из них не позволяет вводить 25 .xxxxxxx или 2 .xxxxxxx без необходимости ставить 0 перед номером (025.xxxxxxx и 002.xxxxxxx).
2. То, как вы сформулировали свой вопрос, заставляет думать, что это было желаемое поведение. Если вы хотите разрешить менее трех цифр перед десятичной дробью, см. раздел Редактирование.