Eton B.
Eton B.

Reputation: 6281

Trouble with the simplest regex

I'm trying to validate an ASP TextBox that can only have 1-2 digits (not zero) using the following regex:

^[1-9]{1,2}

This regex doesn't validate if the field is empty (assumed it would due to the 1-2 part)

Also tried ^[1-9+]{1,2} to no avail.

These are my controls:

<asp:TextBox ID="txtInHour" 
             MaxLength="2" 
             runat="server" 
             Text='<%# Bind("InHour") %>' 
            Width="80"/>


<asp:RegularExpressionValidator ID="rvInHour" 
                ControlToValidate="txtInHour" 
                Display="None" 
                ValidationExpression="^[1-9]{0,2}$" 
                runat="server" 
                ErrorMessage="InHour is incorrectly formatted." />  

Upvotes: 1

Views: 100

Answers (3)

Eton B.
Eton B.

Reputation: 6281

I found out that for some reason RegularExpressionValidators don't work when there's no input to match against (blank fields) so I had to use a seperate RequiredFieldValidator. Thanks for your input everyone!

Upvotes: 1

HoLyVieR
HoLyVieR

Reputation: 11134

You can use this regex :

 ^([1-9]|[1-9][0-9])$

Upvotes: 0

Jan.
Jan.

Reputation: 1995

The first thing I notice is that you don't allow zeros in your pattern. So 10 or 20 is not valid? The second thing is that you start with "starts with" AKA "^" but there's no "ends with" AKA "$"

So.. try this:

^[1-9][0-9]?$

In human readable:

  • starts with 1-9, followed by an optional digit from 0-9, end of string.

On the other hand I don't know what you've meant with ("no zeros") - no zeros at all?!

Upvotes: 1

Related Questions