Обнаружение положительной/отрицательной маски Lat/Long

#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. То, как вы сформулировали свой вопрос, заставляет думать, что это было желаемое поведение. Если вы хотите разрешить менее трех цифр перед десятичной дробью, см. раздел Редактирование.