我试图在JavaScript + ASP.NET网络表单中执行Regex,以验证TextBox只接受正十进制数,最多18位和2位小数。
<script type="text/javascript">
$(document).ready(function (e) {
$("#<%=txtQtt.ClientID%>").bind('keypress', function (event) {
var regex = new RegExp("^[0-9]{1,18}(?:\.[0-9]{0,2})?$");
var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
if (!regex.test(key)) {
event.preventDefault();
return false;
}
});
});
</script>
<span class="label100">Quantity:</span>
<asp:TextBox ID="txtQtt" runat="server" CssClass="txt200" MaxLength="20"></asp:TextBox>
代码&#34;工作&#34;(它只接受数字),但不允许我输入一个点,我希望他只接受只有一个点。
我做错了什么?
答案 0 :(得分:1)
您需要在\\.
对象中使用RegExp
:
var regex = new RegExp("^[0-9]{1,18}(?:\\.[0-9]{1,2})?$");
否则你可以使用正则表达式文字:
var regex = /^[0-9]{1,18}(?:\.[0-9]{1,2})?$/
最好在小数点后使用[0-9]{1,2}
代替[0-9]{0,2}
,否则它也会允许123.
作为有效数字,