TextBox 控件的要求是接受以下作为有效输入:
- 一串数字。
- 文字字符串“房间数”。
- 没有任何价值(留空)。根本不指定值应该允许 RegularExpressionValidator 通过。
遵循 RegEx 产生了预期的结果(成功验证了 3 种类型的输入):
"Number of rooms|[0-9]*"
但是,当一位同事询问为什么在指定字符串“房间数”时以下内容无法验证(要求#2)时,我无法做出解释:
"[0-9]*|Number of rooms"
关于为什么在这种情况下交替的顺序很重要的解释确实非常有见地。
更新:
第二个正则表达式成功匹配控制台应用程序中的目标字符串“房间数”,如下所示。但是,当输入为“房间数”时,在 aspx 标记中使用相同的表达式不匹配。这是相关的 aspx 标记:
<asp:TextBox runat="server" ID="textbox1" >
</asp:TextBox>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1"
EnableClientScript="false" runat="server" ControlToValidate="textbox1"
ValidationExpression="[0-9]*|Number of rooms"
ErrorMessage="RegularExpressionValidator"></asp:RegularExpressionValidator>
<asp:Button ID="Button1" runat="server" Text="Button" />