[Webinar] Streamline your web hosting managementRegister Today

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1349
  • Last Modified:

Regular Expression for decimal values in an ASP:RequiredFieldValidator

Hi:

I'm not great with regular expressions, so I thought I'd do a post here.

I have an  asp:RequiredFieldValidator on an asp:TextBox.
I want to add a regular expression to validate numeric/decimal values.

So, samples which would match the regex would be:
=====================================

123
123.12
123.00
123
1234
1,234
1,234.00
1,234.56
1234456
1,234,456
1,234,456.00
1,234,456.78

Any help would be greatly appreciated.

Thanks,
JohnB
0
jxbma
Asked:
jxbma
  • 3
  • 2
  • 2
  • +3
1 Solution
 
bmatumburaCommented:
Try this:
^(\d|-)?(\d|,)*\.?\d*$

Open in new window

0
 
sybeCommented:
0
 
Anil GolamariCommented:
http://www.regexlib.com/Search.aspx?k=decimal&c=3&m=5&ps=20

Here you got a list of regular expression. You can select or customize the expression which were you want to build. So take a look at the above site you even have some expression which you can just copy into your code and you should be good to go.

Good Luck.
0
Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

 
bmatumburaCommented:
Note: My first post also allows negative numbers and it enforces a comma between groups of 3 digits. Use this to only allow positive numbers and make the comma between digit groups optional: ^(((\d{1,3})(,\d{3})*)|(\d+))(.\d+)?$
0
 
jdavistxCommented:
I agree with sybe.

You could do something like the attached.  The value of i will only matter if the parse was successful.
int i;
if( Double.TryParse(myValue.ToString(), i) )
	//i now contains the double value of myValue

Open in new window

0
 
jxbmaSoftware ConsultantAuthor Commented:
I'm going with bmatumbura.
This is client side validation.
Should easily be able to do it with the right regex.

JB
0
 
jxbmaSoftware ConsultantAuthor Commented:
bmatumbura:

This works fine except for these cases:

1,234
1,234.56
0
 
Carl TawnSystems and Integration DeveloperCommented:
It would be a lot simpler just to use a RangeValidator with its Type attribute set correctly.
0
 
Anil GolamariCommented:
^(\d{1,3},(\d{3},)*\d{3}(\.\d{1,3})?|\d{1,3}(\.\d{3})?)$
try this
0
 
jxbmaSoftware ConsultantAuthor Commented:
The best I came up with is:


^[0-9]+(,[0-9]{3})*(\.[0-9]{0,2})*

It works for the following cases:
----------------------------------------
10
10.00
10.10
10.1
100.1
1000.1
123.1
1234.1
1,234.1
10.01
10.
100
101
110
1000
1001
1010
1011
1100
1101
1110
123
123.12
123.00
123
1234
1,234
1,234.00
1,234.56
1234456
1,234,456
1,234,456.00
1,234,456.78
1,234,456.00

Unfortunately, it falsely accepts the following:
---------------------------------------------------------
10.123


But I can live with that for now.
0

Featured Post

Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

  • 3
  • 2
  • 2
  • +3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now