繁体   English   中英

正则表达式仅匹配整数,而不匹配任何不起作用的字符串

[英]regex to match ONLY integers and not any strings not working

我的网站中有一个Cart实用程序,它是用ASP.NET构建的。 在购物车页面中,就像通常在每个页面上一样,我将quantity * price乘以计算购物车中单个项目的总和。

对于quantity ,我有一个<asp:TextBox .... TextMode="Number"/>控件。 并在<asp:RegularExpressionValidator.../>使用了正则表达式。

以下是ASPX代码:

<asp:TextBox ID="txtQty" runat="server" Text="1" TextMode="Number" Style="width: 45px; text-align: center; margin-left: 10px"></asp:TextBox>

 <asp:RegularExpressionValidator ID="regExQty" runat="server" ControlToValidate="txtQty" ValidationExpression="^[1-9][0-9]*$" ErrorMessage="Invalid Quantity!" Display="Dynamic" ForeColor="Red"></asp:RegularExpressionValidator>

现在使用此regex它对于以下输入可正常运行:

1)不允许输入“ 0”

2)不允许负数

但是它允许以下内容:

1)输入:“ 1pppp”,即后面跟数字的任意数量的字符

2)输入:'p',即只允许使用字符串。

我不知道为什么会这样。

注意:我使用了一个转发器控件,其中有一个用于数量的文本框。

更新:这是用于计算total的代码:

int total = 0;

        for (int i = 0; i < rptr.Items.Count; i++)
        {
            TextBox txtBox = (TextBox)rptr.Items[i].FindControl("txtQty");
            HiddenField hdnProductId = (HiddenField)rptr.Items[i].FindControl("hdnVendorItemID");

            VendorItemLogic vendorItemLogic = new VendorItemLogic();
            VendorItem vendorItem = vendorItemLogic.SelectByID(Convert.ToInt32(hdnProductId.Value));
            int price = Convert.ToInt32(vendorItem.Price);

            total += Convert.ToInt32(txtBox.Text) * price;

            lblTotal.Text = String.Format("{0:#,###,###.##}",(object)total);
            plcHldrTotal.Visible = true;

        }

这是在我从文本框中删除光标之前发生的情况

这就是发生的情况,它没有给出错误消息,但是将边框颜色更改为红色,然后再次将光标移出它时,它删除了边框颜色。

的确,在ASP.NET 4.5中, TextMode属性可以具有三个以上的值(“ SingleLine”,“ MultiLine”或“ Password”)。 但是,并非所有Web浏览器都支持这些功能。

引用codeproject的报价:

所有这些新选项仅适用于支持这些HTML5功能的浏览器(例如:Internet Explorer 10,Chrome和Opera)。 对于所有其他浏览器(Internet Explorer和Firefox的早期版本),这些文本框将充当普通文本框。

因此,要使您的代码与所有浏览器都兼容,您应通过完全删除属性或将其设置为允许的值之一来还原“ Number”值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM