tags:

views:

272

answers:

4

How would I extract the dollar amount from the following string

"some text will go here and more and more and then there will be some price $34.03 but that doesn't mean the string will end"

I want to extract $34.03...also want to extract if there is no cents

"some text will go here and more and more and then there will be some price $34 but that doesn't mean the string will end"

Here I want to extract $34

A: 
'/\$\d+(?:\.\d+)?/'

if(preg_match('/\$\d+(?:\.\d+)?/',$text,$matches)){
    echo $matches[0]; //which would be $34 or $34.03
}
S.Mark
+4  A: 

I'm no regex-guru, but was able to whip up the following with RegExr.

/(\$[0-9]+(\.[0-9]{2})?)/

Matches $35.03 and $35. To accept formats like $35,000.52 you would need to include ,

/(\$[0-9,]+(\.[0-9]{2})?)/

This could likely be improved upon, but from my preliminary tests, it works just fine.

Jonathan Sampson
+1  A: 

Since you don't mention a specific regex engine, you might have to adjust this a bit:

/(\$\d+(\.\d+)?)/
Kris
+1  A: 

what about this regexp: \$[0-9.,]+ or \$([0-9.,]+) to strip the $

it's simple but it does pretty much what you want, it even catches things like this: $1,450.8934 or $14.343

of course the drawback it'd be that it'd catch $34.54.23 as well

or if you want to catch only two decimals: \$[0-9,]+.[0-9]{2} it'd catch the $5.23 part of $5.234565

you can use it with preg_match or preg_match_all.

see you

raf