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

chokka
chokka used Ask the Experts™
on
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

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Top Expert 2016

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.
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.
Ensure you’re charging the right price for your IT

Do you wonder if your IT business is truly profitable or if you should raise your prices? Learn how to calculate your overhead burden using our free interactive tool and use it to determine the right price for your IT services. Start calculating Now!

Top Expert 2016
Commented:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication3.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="Scripts/jquery-3.3.1.min.js"></script>
</head>

<body>
    
    <form id="form1" runat="server">
        <div><asp:TextBox ID="TextBox1" runat="server" />
           
<br />
<asp:RegularExpressionValidator ID="Regex1" runat="server" ValidationExpression="\d{1,3}\.\d{1,2}$"
ErrorMessage="Please enter valid integer or decimal number with 2 decimal places from 0-999.99."
ControlToValidate="TextBox1" />
        </div>
    </form>
</body>
</html>

Open in new window

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
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

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}).

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial