Javascript正则表达式只检查字符串开头的数字和减号
您好,我正在尝试在这个输入字段中设置一个正则表达式,只接受4个不大于2934的数字,但也接受一个负数(-2394) 我希望只允许在字符串的开头使用减号,然后只允许4个数字,不大于2934(正和负,因为它们是坐标) 已经在这里尝试了给定的解决方案,但我遗漏了一些东西Javascript正则表达式只检查字符串开头的数字和减号,javascript,regex,expression,Javascript,Regex,Expression,您好,我正在尝试在这个输入字段中设置一个正则表达式,只接受4个不大于2934的数字,但也接受一个负数(-2394) 我希望只允许在字符串的开头使用减号,然后只允许4个数字,不大于2934(正和负,因为它们是坐标) 已经在这里尝试了给定的解决方案,但我遗漏了一些东西 函数nummonly(myfield,e,dec){ //4196 x 4196的最大输入值 $(“#mlat,#mlon”).keyup(函数(){ var val=$(this.val().replace(/[^0-9]+/,“
函数nummonly(myfield,e,dec){
//4196 x 4196的最大输入值
$(“#mlat,#mlon”).keyup(函数(){
var val=$(this.val().replace(/[^0-9]+/,“”);
如果(val=>2934){
!/^\s*$/.test(val);
val=(parseInt(val)>2934)?2934:val;
}
否则{
(!/^\s*$/.test(val));
val=(parseInt(val)>2934)?2934:val;
}
$(this).val(val);
});
}
我正在尝试使此输入字段中的正则表达式只接受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 ;
var minValue=-2394;
var maxValue=2934;
var val=+$(this.val().replace(//[^0-9-]+/g,”);//使用您自己的正则表达式替换非数字字符
var isValid=!isNaN(val)&&valminValue;
另外,我注意到您希望将这些值设为上限和下限
if ( !isNaN( val ) )
{
var finalVal = isValid ? val : (val < 0 ? minValue : maxValue);
}
if(!isNaN(val))
{
var finalVal=isValid?val:(val<0?minValue:maxValue);
}
功能编号(myfield,e,dec){
//4196 x 4196的最大输入值
$(“#mlat,#mlon”).keyup(函数(){
var val=$(this.val().replace(/[^0-9-]+/,”);
如果(parseInt(val)>2934){
val=(parseInt(val)>2934)?2934:val;
}
否则{
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)">
您可以使用以下方法:
<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>
功能编号(myfield,e,dec){
//4196 x 4196的最大输入值
$(“#mlat”).keyup(函数(){
var val=$(this.val().replace(/-?\d+[^0-9]+/,“”);
如果(val=>2934){
!/^\s*$/.test(val);
如果(val>0){
val=(parseInt(val)>2934)?2934:val;
}否则{
val=(parseInt(val)>-2394)?val:-2394;
}
}
否则{
(!/^\s*$/.test(val));
如果(val>0){
val=(parseInt(val)>2934)?2934:val;
}否则{
val=(parseInt(val)>-2394)?val:-2394;
}
}
$(this).val(val);
})
};
并将maxlength替换为5以处理
-
登录输入标记。谢谢您的回答,但使用该正则表达式时,它不允许我在数字前输入负号。@RogerHN当然,更新了正则表达式…还添加了一个全局修饰符。我遇到了一个问题,即如果我开始键入字符,然后尝试删除字符,它会保留数字ber为零,不允许我在开始处放置减号。这正常吗?如果我键入减号,它将显示最大值。我缺少什么?我设置了一个if条件,如果原始值是一个有效的整数,则只更改该值。这非常有效。有没有办法防止输入像-2--编辑答案。现在只需复制答案并在浏览器中运行它。很好!几乎完美。如果我在开始时输入一个负号,它会将值更改为-2394,或者如果我尝试在删除4个数字时删除这些数字,它会变回-2394。为此,您可以在单击按钮时调用该函数,因为现在它会在按键时触发,这就是为什么您无法获得它的原因他问。@RogerHN你有答案吗?
<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>