JavaScript上的正则表达式只接受带有2位小数的数字

时间:2014-10-08 15:00:29

标签: javascript c# asp.net regex

我试图在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;(它只接受数字),但不允许我输入一个点,我希望他只接受只有一个点。

我做错了什么?

1 个答案:

答案 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.作为有效数字,