嘿,我正在尝试为我的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
如何格式化它才能按照我的需要工作?
您可以简单地将破折号设置为可选:
^-?\d{3}\.\d{7}$
我冒昧地重构了你的正则表达式模式(
[0-9]
-> \d
,[.]
-> \.
)。
至于允许第一部分为一位或两位数字,您可以使用:
^-?\d{1,3}\.\d{7}$
纬度:
String.raw`-?\d{1,2}([.]\d{0,7})?`
经度:
String.raw`-?\d{1,3}([.]\d{0,7})?`