Go Premium for a chance to win a PS4. Enter to Win

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

How can I change this regular expression

I have the following regular expression that works great for me when it comes to currency numbers.  However I need the same format ability, except I also need to be able to except (negative numbers as well ie  ($245.00) .  How can this expression be changed to except negatives dollars for some people have credits.  Here is the expression.

"^\$?\-?([1-9]{1}[0-9]{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))$|^\-?\$?([1-9]{1}\d{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))$|^\(\$?([1-9]{1}\d{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))\)$"


thanks
0
mgmhicks
Asked:
mgmhicks
  • 3
  • 2
  • 2
  • +1
2 Solutions
 
Dan CraciunIT ConsultantCommented:
If you mean your expression should match this:
($-245.00)
Then you should add the - in an alternation:
^\$?\-?([1-9]{1}[0-9]{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))$|^\-?\$?([1-9]{1}\d{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))$|^\(\$?-?([1-9]{1}\d{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))\)$
0
 
Fernando SotoCommented:
Hi mgmhicks;

The regex already excepts the following $245.00 and -$245.00 and $-245.00 patterns.
0
 
Dan CraciunIT ConsultantCommented:
@Fernando: not if they are inside parenthesis: ($-254.00)
It's the 3rd alternation
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
Fernando SotoCommented:
@Dan you are correct. I took the ( ... ) to mean what was inside and not as part of the value.
0
 
mgmhicksAuthor Commented:
Sorry guys the number actually looks like this.   ($237.75)

That's what has to be ok, no need for the -  

Not sure how to change it my existing regular expression.
0
 
Terry WoodsIT GuruCommented:
This seems to work:

"^\(?\$?\-?([1-9]{1}[0-9]{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))\)?$|^\(?-?\$?([1-9]{1}\d{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))\)$|^\(?\$?([1-9]{1}\d{0,2}(\,\d{3})*(\.\d{0,2})?|[1-9]{1}\d{0,}(\.\d{0,2})?|0(\.\d{0,2})?|(\.\d{1,2}))\)?$"

Open in new window

0
 
Fernando SotoCommented:
Hi mgmhicks;

I tested your Regex pattern in your post and it works for me just as is. Is there a specific value or range of values that it is not working with for you?
0
 
mgmhicksAuthor Commented:
Thanks to both for the responses. Either worked.
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

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