tags:

views:

35

answers:

3

I'm going through my code to replace any instances I'm using the ereg() function - which I was using for matching regex inside a string.

I could use a little direction, if someone has a better method than what I'm using.

Here's my old "currency validation" script:

    function valid_currency($number){
     if(ereg('^[0-9]+\.[0-9]{2}$', $number))
      return true;
     else
     return false;
    }

    if(valid_currency(25.30)){ 
          echo "valid currency"; 
   }else{ 
          echo "invalid currency string"; 
   }

I replaced the ereg() with preg_match().

I'm getting this error now:

Warning: preg_match() [function.preg-match]: No ending delimiter '^'

I'm guessing the regular expression syntax isn't being recognized. From here I'm a little stuck.

+4  A: 

preg requires delimiters around your regex. It can be almost anything though traditionally it's /. This should work:

preg_match('/^[0-9]+\.[0-9]{2}$/', $number)
Cfreak
Also see http://php.net/pcre.pattern.posix
Daniel Egeberg
A: 

You need the bounds for the regex statement, IE it's thinking you're starting the statement with ^ and saying there's no ending ^ indicating the end of the statement. Use /^[0-9]+\.[0-9]{2}$/ instead

Robert
You're right! I was ALMOST doing it correct. I wasn't paying attention to the ending delimiter. I knew it was something mundane.thanks for making that more obvious.
A: 

Hi,

in preg_match() or preg_match_all() uses "delimiters".examples:

/regEx/ or #regEx# or |regEx| or @regEx@.

I use: /regEx/

function valid_currency($n) { 
                    return preg_match("/^\d+\.\d{2}$/", $n);
        }

returns bool: 1(true) 0(false)

exmaple of use:

echo valid_currency("25.30") ? 'valid currency' : 'invalid currency string';
Jet