Lat/Long面罩正/负检测

问题描述 投票:0回答:2

嘿,我正在尝试为我的2个输入框创建一个掩码,它将容纳纬度经度

假设纬度可以是正数或负数经度也是如此。问题是我正在尝试提出一个 正则表达式 ,它可以让用户能够 首先选择它是正数还是负数然后给用户提供 (-/+ 的掩码) )XXX.XXXXXX.

但是,我还没有太接近结论,因此我寻求一些帮助来实现该目标。

我已经建立了一个 JSFiddle,目前为止我所拥有的东西并不多,以便实现我的目标。

$('.mask').inputmask({
    regex: String.raw `^[-/*][0-9]{3}[.][0-9]{7}$`
});

上面的代码适用于负数,但是当输入时,比如 100.,它只是坐在那里,因为它等待 - 才能开始。我认为添加 * 可以让它输入正数。上述应该允许用户以-XXX.XXXXXX OR 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

如何格式化它才能按照我的需要工作?

javascript jquery regex jquery-inputmask
2个回答
0
投票

您可以简单地将破折号设置为可选:

^-?\d{3}\.\d{7}$

我冒昧地重构了你的正则表达式模式(

[0-9]
->
\d
[.]
->
\.
)。

至于允许第一部分为一位或两位数字,您可以使用:

^-?\d{1,3}\.\d{7}$

0
投票
  • 纬度:

    String.raw`-?\d{1,2}([.]\d{0,7})?`
    
  • 经度:

    String.raw`-?\d{1,3}([.]\d{0,7})?`
    
© www.soinside.com 2019 - 2024. All rights reserved.