[英]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.