您好我想在此输入字段中创建一个正则表达式,只接受4个不大于2934的数字,但也接受负数(-2394)。
我想仅在字符串的开头允许减号,然后仅允许4个数字,不大于2934(正数和负数,因为它们是坐标。
这里已经尝试了给定的解决方案,但我遗漏了一些东西。
function numonly(myfield, e, dec){
// max input value of 4196 x 4196
$("#mlat,#mlon").keyup(function() {
var val = $(this).val().replace(/[^0-9]+/,"");
if (val => 2934){
!/^\s*$/.test(val);
val = (parseInt(val) > 2934) ? 2934 : val;
}
else {
(!/^\s*$/.test(val));
val = (parseInt(val) > 2934) ? 2934 : val;
}
$(this).val(val);
});
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="mlat" type="text" name="mlat" maxlength="4" onkeypress="return numonly(this,event)"><br>
<input type="text" name="mlon" id="mlon" maxlength="4" onkeypress="return numonly(this,event)">
答案 0 :(得分:1)
我想在这个输入字段中创建一个正则表达式,只接受4 数字不大于2934,但也接受负数(-2394)。
此处不需要正则表达式,请使用
var minValue = -2394;
var maxValue = 2934;
var val = +$(this).val().replace(/[^0-9-]+/g,""); //using your own regex to replace non-numeric characters
var isValid = !isNaN( val ) && val < maxValue && val > minValue ;
另外,我注意到你想把这些值作为上限和下限
if ( !isNaN( val ) )
{
var finalVal = isValid ? val : (val < 0 ? minValue : maxValue);
}
答案 1 :(得分:0)
function numonly(myfield, e, dec){
// max input value of 4196 x 4196
$("#mlat,#mlon").keyup(function() {
var val = $(this).val().replace(/[^0-9-]+/,"");
if (parseInt(val) > 2934){
val = (parseInt(val) > 2934) ? 2934 : val;
}
else {
val = (parseInt(val) < -2934) ? -2934 : val;
}
$(this).val(val);
});
}
将最大长度增加到5以满足' - '
<input id="mlat" type="text" name="mlat" maxlength="5" onkeypress="return numonly(this,event)"><br>
<input type="text" name="mlon" id="mlon" maxlength="5" onkeypress="return numonly(this,event)">
答案 2 :(得分:0)
您可以使用以下方法:
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<input id="mlat" type="text" name="mlat" maxlength="5" onkeypress="return numonly(this,event)"><br>
<input type="text" name="mlon" id="mlon" maxlength="5" onkeypress="return numonly(this,event)">
<script type="text/javascript">
function numonly(myfield, e, dec){
// max input value of 4196 x 4196
$("#mlat").keyup(function() {
var val = $(this).val().replace(/-?\d+[^0-9]+/,"");
if (val => 2934){
!/^\s*$/.test(val);
if (val > 0) {
val = (parseInt(val) > 2934) ? 2934 : val;
}else{
val = (parseInt(val) > -2394) ? val : -2394;
}
}
else {
(!/^\s*$/.test(val));
if (val > 0) {
val = (parseInt(val) > 2934) ? 2934 : val;
}else{
val = (parseInt(val) > -2394) ? val : -2394;
}
}
$(this).val(val);
})
};
</script>
</body>
</html>
并将maxlength替换为5以处理输入标记中的-
符号。