Javascript 如何使用正则表达式测试特定的十进制数?

Javascript 如何使用正则表达式测试特定的十进制数?,javascript,regex,Javascript,Regex,我有一个用户需要输入窗口宽度的字段。它需要介于16.75和48之间,并且只能以.25为增量(因此它必须以.00、.25、.50、.75结尾)。我尝试了下面的方法来测试我的正则表达式在31.25上的性能,但是all返回false。我浏览过互联网,但对于像我这样的regex新手来说,找不到太多帮助。有人能帮我弄一下正则表达式吗 以下是字段: <input type="text" id="windowWidth" onchange="basePrice()"> 以下是JS: func

我有一个用户需要输入窗口宽度的字段。它需要介于16.75和48之间,并且只能以.25为增量(因此它必须以.00、.25、.50、.75结尾)。我尝试了下面的方法来测试我的正则表达式在31.25上的性能,但是all返回false。我浏览过互联网,但对于像我这样的regex新手来说,找不到太多帮助。有人能帮我弄一下正则表达式吗

以下是字段:

<input type="text" id="windowWidth" onchange="basePrice()">

以下是JS:

function basePrice()
{
    var windowWidth = document.getElementById("windowWidth").value;
    var windowHeight = document.getElementById("windowHeight").value;

    if (windowWidth != "" && windowWidth > 16.75 && windowWidth < 48)
    {
         alert(/^\d{2}\.[00]$/.test(windowWidth));
         alert(/^\d{2}\.[25]$/.test(windowWidth));
         alert(/^\d{2}\.[50]$/.test(windowWidth));
         alert(/^\d{2}\.[75]$/.test(windowWidth));
    }
    else
    {
         alert("error");
         exit;
    }
}
函数基价()
{
var windowWidth=document.getElementById(“windowWidth”).value;
var windowHeight=document.getElementById(“windowHeight”).value;
如果(windowWidth!=''&&windowWidth>16.75&&windowWidth<48)
{
警报(/^\d{2}\[00]$/.test(windowWidth));
警报(/^\d{2}\[25]$/.test(windowWidth));
警报(/^\d{2}\[50]$/.test(windowWidth));
警报(/^\d{2}\[75]$/.test(windowWidth));
}
其他的
{
警报(“错误”);
出口
}
}

删除正则表达式中用于字符类的
[
]

alert(/^\d{2}\.(?:00|25|50|75)$/.test(windowWidth));
例如:
[00]
表示匹配文字0或0


[25]
表示匹配2或5

删除
[
]
,用于正则表达式中的字符类:

alert(/^\d{2}\.(?:00|25|50|75)$/.test(windowWidth));
例如:
[00]
表示匹配文字0或0


或者
[25]
表示匹配2或5

您可能可以将它们组合起来测试它们是否在您的范围内,然后使用以下正则表达式:

/^\d{2}\.(00|25|50|75)$/

如果它们在您的范围内,您可以将它们组合起来进行测试,然后使用以下正则表达式:

/^\d{2}\.(00|25|50|75)$/

下面是一种非正则表达式的方法,它可能更有效,也不那么混乱:

var has25decimal = (windowWidth * 100) % 25 == 0

%
(模)在数字除以25后给出余数。当这是0时,数字可以除以25。

这里有一种非正则表达式的方法,它可能更有效,也不太混乱:

var has25decimal = (windowWidth * 100) % 25 == 0

%
(模)在数字除以25后给出余数。当该值为0时,数字可以除以25。

如果可以使用html 5输入属性,则可以尝试此操作(不使用正则表达式):



这将强制执行最小值和最大值,并在单击向上或向下箭头时更改0.25。

如果可以使用html 5输入属性,则可以尝试此操作(不使用正则表达式):



这将强制执行最小值和最大值,并在单击向上或向下箭头时更改0.25。

此操作不需要正则表达式。你可以简单地使用数学表达式

var n = 35.23;

n >= 16.75 && n <= 48 && !(n % .25); //false

n = 35.25;

n >= 16.75 && n <= 48 && !(n % .25); //true
var n=35.23;

n>=16.75&&n=16.75&&n此操作不需要正则表达式。你可以简单地使用数学表达式

var n = 35.23;

n >= 16.75 && n <= 48 && !(n % .25); //false

n = 35.25;

n >= 16.75 && n <= 48 && !(n % .25); //true
var n=35.23;


n>=16.75&&n=16.75&&n仅供参考,您需要了解的关于正则表达式的所有信息都可以在www.regular-expressions.infoNo上找到。我想这是我遗漏的部分。谢谢你居高临下的评论,没有一个有用的解决方案。@kaitlynjanine只是为了学习的目的,确保你有一个不涉及正则表达式的其他答案。仅供参考,关于正则表达式,你需要知道的几乎所有东西都可以在www.regular-expressions.infoNo上找到。我想这是我错过的部分。谢谢你居高临下的评论,没有一个有用的解决方案。@kaitlynjanine只是为了学习的目的,请确保你看到了其他不涉及正则表达式的答案。哎呀!我需要修正它。我希望它能工作,因为它比较短,但它总是返回false。谢谢你的帮助!工作起来很有魅力。谢谢我需要一个类似的正则表达式,我做了一点小小的调整,这样用户就不必输入无意义的尾随零:
/^\d{2}\(0 | 00 | 25 | 5 | 50 | 75)$/
Oops!我需要修正它。我希望它能工作,因为它比较短,但它总是返回false。谢谢你的帮助!工作起来很有魅力。谢谢我需要一个类似的正则表达式,我做了一个小小的调整,这样用户就不必输入无意义的尾随零:
/^\d{2}\(0 | 00 | 25 | 5 | 50 | 75)$/
,感谢您提供的信息。下次我必须记住这一点。你真棒!谢谢你的信息。下次我必须记住这一点。你真棒!我花了很长时间才得知你的答案。当我收到通知时,我已经写完了,所以我决定无论如何都要把它贴出来。我花了很长时间才收到你的答复通知。当我接到通知时,我已经写完了,所以我决定无论如何都要把它贴出来。+1相当整洁,我不知道这一点。HTML5还没有到达我的工作地点。。。呵呵;)+1相当整洁,我不知道这一点。HTML5还没有到达我的工作地点。。。呵呵;)