|  | Posted by Rik on 05/06/06 16:16 
Rik wrote:> Martie wrote:
 >> May be worth trying something using the "preg_match()" function. With
 >> the first example you had I was able to get that to work with the
 >> following. Though I did just catch the potential for "501", so it
 >> needs a littel more tweaking.
 >> '/^[1-5]*[0-9]*[1-9]+\-[1-5]*[0-9]*[1-9]+\@[1-9]+[0-9.]*$/'
 >
 > If leading zeroes have to be impossible, and 500 is indeed the highest
 > number allowed:
 >
 >
 '/^(500|[1-4][0-9]{2}|[1-9][0-9]?)(-(500|[1-4][0-9]{2}|[1-9][0-9]?))?@(500|[
 > 1-4][0-9]{2}|[1-9][0-9]?)(-(500|[1-4][0-9]{2}|[1-9][0-9]?))?$/'
 
 Hmmmz, some mistake, I thought the format was 000-000@000-000
 
 For int1-int2@float1
 0 < int1 <= 500
 0 < int2 <= 500
 0 < float <= 10000
 '/^(500|[1-4][0-9]{2}|[1-9][0-9]?)(-(500|[1-4][0-9]{2}|[1-9][0-9]?))?@(10000
 (\.0*)?|[1-9][0-9]{4}(\.[0-9]*)?|0\.0*[1-9]+0*)$/'
 
 But still, for portability (I've disallowed 0 in int's and 0.0000etc.. in
 float, no leading zeroes except in case of float 0*point*something other
 then just zeroes):
 preg_match('/^([1-9][0-9]*)(?:-([1-9][0-9]*))?@(0\.0*[1-9]+0*|[1-9][0-9]*(?:
 \.[0-9]*)?)/', $string, $matches)
 $matches[1] = int1
 $matches[2] = int2
 $matches[3] = float1
 Do further validating with $matches array.
 
 Offcourse, allowing (leading) zeroes makes it much easier:
 preg_match('/^([0-9]+)(?:-([0-9]+))?@([0-9]+(\.[0-9]+)?/', $string,
 $matches)
 
 Grtz,
 --
 Rik Wasmus
  Navigation: [Reply to this message] |