asp.net中的RegularExpressionValidator不适用于1位或2位数

时间:2017-08-25 18:47:29

标签: javascript c# asp.net regex

我已经阅读了有关RegularExpressionValidator的其他问题的其他答案,但他们没有帮助。我正在开发一个ASP.NET C#应用程序,我有一个文本字段,需要是1位或2位数字。这是控件:

<asp:TextBox 
    ID="Hunt_Daily_Sitting_hrs" 
    runat="server" 
    class="form-control" 
    placeholder="hours" 
    type="number"></asp:TextBox>

正如所写,即使它指定type =“number”,它也允许数学运算符。因此人们在“6到8小时”内进入“6-8”。在this页面上,正则表达式^ \ d {1,2} $标记这样的条目。但是,在我的应用程序中,行

<asp:RegularExpressionValidator 
    ID="HuntSitRegexp" 
    Display="Dynamic" 
    ControlToValidate="Hunt_Daily_Sitting_hrs" 
    ValidationExpression="^\d{1,2}$" 
    runat="server" 
    ErrorMessage="Please enter a number from 1-24" 
    Font-Size="Large" 
    ForeColor="Red" />

没有。立即标记3位数字,但不会立即标记“6-8”等条目。但是,诸如“6-8”之类的条目无法提交,因为“提交”按钮不执行任何操作,表示Javascript验证失败。因此,用户会想到“表单有什么问题?它不会提交,但没有错误信息。”

3 个答案:

答案 0 :(得分:1)

ValidationExpression="^\d{1,2}$"没问题,但是对number类型的输入没有启用正则表达式检查。

因此,您需要将asp:TextBox控件type="number"更改为type="text"

答案 1 :(得分:0)

尝试使用此Reg Ex

^[0-9]{1,2}$

答案 2 :(得分:0)

我认为改变类型的答案是正确的。 但是,我注意到了你的 ValidationExpression = “^ \ d {1,2} $”
和 ErrorMessage =“请输入1-24之间的数字” 不符合。这将需要任何1-2位数字。

仅匹配数字1-24的RegEx表达式如下:^(\ d)$ | ^(1 \ d)$ | ^(2 [0-4])$