【问题标题】:Lat/Long mask positive/negative detectionLat/Long 掩码正/负检测
【发布时间】:2021-09-29 03:10:16
【问题描述】:

大家好,我正在尝试为我的 2 个输入框 创建一个 蒙版,该输入框将容纳 latitudelongitude强>。

考虑到纬度可以是正数或负数经度也是如此。问题是我正在尝试提出一个 regex,它可以让用户能够首先选择它是正数还是负数,然后 g 用户使用 (-/+)XXX.XXXXXX 的掩码

但是,我并没有太接近结论,所以我请求一些帮助以实现该目标。

我已经设置了一个 JSFiddle 到目前为止,这并不多,以存档我的目标。

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

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


    【解决方案1】:

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

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

    我冒昧地重构了您的 RegEx 模式([0-9] -> \d[.] -> \.)。

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

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

    【讨论】:

    • 这些都不允许您键入 25.xxxxxxx 或 2.xxxxxxx 而不必在数字前面加 0 (025.xxxxxxx和 002.xxxxxxx)
    • 您对问题的措辞方式使它看起来像是您希望的行为。如果您想允许小数点前少于三位,请参阅编辑。
    猜你喜欢
    • 2016-10-04
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    • 2018-08-10
    • 2010-10-25
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多