We help IT Professionals succeed at work.

How to have textbox regular expression validation on asp.net?

166 Views
Last Modified: 2018-09-17
How to have textbox regular expression validation on asp.net?


I will have to allow 3 digits and units in the text box. Decimal units should not exceed more than 2 units.

How to handle that?
Comment
Watch Question

David Johnson, CDSimple Geek from the '70s
CERTIFIED EXPERT
Distinguished Expert 2019

Commented:
what is the difference between digits and units?
Please show a sample of valid and invalid entries
chokkaStudent

Author

Commented:
1.0 to 999.99 is valid

If user entered 500.000 , it will not allow user to enter more than 500.00  or round it up.

In other words .. user cant type 100.00000000 ..  decimal units should be stopped at 2 digit units.
CERTIFIED EXPERT

Commented:
I don't know ASP but the regex would be this:
^\d{1,3}\.\d{1,2}$

Open in new window


That will require at least one digit before and after the decimal with a max of 3 before and 2 after.
Simple Geek from the '70s
CERTIFIED EXPERT
Distinguished Expert 2019
Commented:
This problem has been solved!
(Unlock this solution with a 7-day Free Trial)
UNLOCK SOLUTION
chokkaStudent

Author

Commented:
This is my solution. It works.

But .. what it happens . is that, it allows the user to enter the number as 100.000000

and then prompt a message.

Instead of doing that, is there a way to prevent the user to type more than .00 digits.
chokkaStudent

Author

Commented:
Also i am using <Input> syntax. Instead of ValidationExpression, i am using the attribute : pattern
CERTIFIED EXPERT

Commented:
I'm guessing there isn't a way to do that but, as I said, I don't know ASP (just regexes).
chokkaStudent

Author

Commented:
Anyways, for now i am good. Thanks for helping me !!!!
chokkaStudent

Author

Commented:
@Wilcoxon

Regex which you shared : ^\d{1,3}\.\d{1,2}$


When we enter the digit as 100 , it doesn't take it. It is expecting to enter the digit as 100.00
decimal unit should be optional as well as decimal unit should not exceed more than 2 units.

This is my current syntax :

[RegularExpression(@"\d{1,3}\.\d{1,2}$", ErrorMessage = "Invalid.")]
[Range(60.00, 120.00, ErrorMessage = "Invalid.")]

Open in new window

CERTIFIED EXPERT

Commented:
Is there some reason that you did not give me partial credit for providing the regex (the same one that David Johnson used in his code)?

Based on your original post and your first comment, it appeared you were saying that at least one decimal digit was required.  To make it optional, change the regex to:
^\d{1,3}(?:\.\d{1,2})?$

Open in new window


Now it will accept anything from 0 to 999.99 (if 0 should not be allowed then change the first \d{1,3} to [1-9]\d{0,2}).