【发布时间】:2018-01-05 09:01:37
【问题描述】:
我正在尝试使用 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;
因此输入没有价值。
【问题讨论】:
-
这里怎么了?
-
还有什么需要解释的?
-
我看到你做了所有你想要监听事件和验证输入的事情,否则我找不到问题。
-
问题是正则表达式似乎与小于 xx.x 的值不匹配
-
例如我在键盘上按任意数字,正则表达式返回false,输入没有值。
标签: jquery regex input latitude-longitude mask