这个问题已经在这里有了答案:
9年前关闭。
我只允许0.00到100.00。
function ValidateText(i)
{
if(i.value.length>0)
{
i.value = i.value.replace(/[^\d.d]+/g, '');
}
}
<asp:textbox id="txtrate" runat="server" Width="200px" onkeyup= "javascript:ValidateText(this)"></asp:textbox>
允许0-9.0-9。请帮帮我。谢谢
最佳答案
现在,这是一个受欢迎的问题!
这应该做:
function validate(s) {
return s.match(/^(100(\.0{1,2})?|[1-9]?\d(\.\d{1,2})?)$/) != null;
}
var test = [
'3.0',
'5',
'99.99',
'100',
'100.00',
'100.01',
'101',
'0.3',
'.5',
'0.567',
];
for (i=0; i<test.length; ++i) {
WScript.StdOut.WriteLine(test[i] + ' => ' + validate(test[i]));
}
输出:
3.0 => true
5 => true
99.99 => true
100 => true
100.00 => true
100.01 => false
101 => false
0.3 => true
.5 => false
0.567 => false
编辑:可以将正则表达式缩短一些而不改变其含义,感谢6502
/^(100(\.00?)?|[1-9]?\d(\.\d\d?)?)$/
关于javascript正则表达式,百分比介于0到100之间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6593017/