我正在尝试使用jQuery屏蔽专门针对纬度和经度值的输入。我开始搜索正则表达式值以验证它们中的每一个,并希望我找到了这些:
for latitude
/^-?([0-8]?[0-9]|90)\.[0-9]{1,6}$/
for longitude
/^-?((1?[0-7]?|[0-9]?)[0-9]|180)\.[0-9]{1,6}$/
我还发现了一个使用正则表达式屏蔽输入的函数,如下所示:
$(this).keypress(function(event){
if(!event.charCode){
return true;
}
var part1 = this.value.substring(0,this.selectionStart);
var part2 = this.value.substring(this.selectionEnd,this.value.length);
if(!mask.test(part1 + String.fromCharCode(event.charCode) + part2)){
return false;
}
});
现在当我检查/^-?([0-8]?[0-9]|90)\.[0-9]{1,6}$/.test("44.4")
之类的值时,验证会返回true
,但我想在这里完成的是在用户输入时验证这些输入。
例如,我首先输入4:
/^-?([0-8]?[0-9]|90)\.[0-9]{1,6}$/.test("4") returns false;
因此输入没有值。
答案 0 :(得分:1)
Latitute:/^(?:-|-?(?:\d|[1-8]\d?|90?)(?:\.[0-9]{0,6})?)$/
^
(?:
-
|
-?
(?:
\d
| [1-8] \d?
| 90?
)
(?: \. [0-9]{0,6} )?
)
$
经度:/^(?:-|-?(?:\d|[1-9]\d?|1(?:[0-7]\d?)?|1(?:80?)?)(?:\.[0-9]{0,6})?)$/
^
(?:
-
|
-?
(?:
\d
| [1-9] \d?
| 1
(?: [0-7] \d? )?
| 1
(?: 80? )?
)
(?: \. [0-9]{0,6} )?
)
$
24小时制:^(?:\d|0\d?|1\d?|2[0-3]?)(?::(?:\d|0\d?|[1-5]\d?)?)?$
^
(?:
\d # 0 - 9
| 0 \d? # 00 - 09
| 1 \d? # 10 - 19
| 2 [0-3]? # 20 - 23
)
(?:
: # :
(?:
\d # 0 - 9
| 0 \d? # 00 - 09
| [1-5] \d? # 10 - 59
)?
)?
$
答案 1 :(得分:0)
换句话说,当用户输入你想要一个原本无效的输入时?为什么不在输入失去焦点后检查?或者你可以使用最后一个键输入的某种计时器。