PHP preg_match validation

I need a preg_match to make sure it starts with a letter and a max of 8 characters this is for a WHMCS validation.
zskull88Asked:
Who is Participating?
 
Ray PaseurConnect With a Mentor Commented:
Just a thought... Learn about TDD.  It will save you a lot of time if you set up your test data - both valid and invalid - before you start trying to write the code.
<?php // RAY_temp_zskull88.php
error_reporting(E_ALL);

$regex
= '/'         // REGEX DELIMITER
. '^'         // START OF STRING
. '[a-z]'     // ALPHABETIC
. '{1}'       // ONE CHARACTER REQUIRED
. '[a-z0-9]'  // ALPHANUMERIC
. '{0,7}'     // ZERO TO SEVEN CHARACTERS REQUIRED
. '$'         // END OF STRING
. '/'         // END OF REGEX DELIMITER
. 'i'         // CASE -INSENSITIVE
;

$valid
= array
( 'A'
, 'A1'
, 'ABCDEFGH'
, 'Z999'
)
;

$bogus
= array
( '31'
, 'A Blank'
, 'muchTooLongForTheRegex'
, NULL
, 'Punc?'
)
;

echo '<br/>TEST FOR VALID';
foreach ($valid as $string)
{
    if (preg_match($regex, $string)) echo "<br/>VALID: $string";
    if (!preg_match($regex, $string)) echo "<br/>BOGUS: $string";
}

echo '<br/>TEST FOR BOGUS';
foreach ($bogus as $string)
{
    if (preg_match($regex, $string)) echo "<br/>VALID: $string";
    if (!preg_match($regex, $string)) echo "<br/>BOGUS: $string";
}

Open in new window

0
 
Ray PaseurCommented:
Untested code, but probably OK in principle:

function validate($str, $len=8)
{
    if (strlen($str) > $len) return FALSE;
    if (!preg_match('/a-z/i', substr($str,0,1)) return FALSE;
    return TRUE;
}
0
 
Ray PaseurCommented:
Is this the "WHMCS"
http://www.whmcs.com/
0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
zskull88Author Commented:
Yes it is Ray.
0
 
zskull88Author Commented:
Also it needs to allow numbers if possible and caps.
0
 
Ray PaseurCommented:
"... allow numbers if possible and caps."

How?  Please post your test data set including valid and invalid examples so we can see how you expect to process these.  Show us what examples you have for both the good and bad values, then we can show you how to test/select.

Thanks, ~Ray
0
 
zskull88Author Commented:
/^[a-z0-9]{2,8}$/i is what I have now for whmcs you can test it on https://billing.pingpulse-servers.com/cart.php?a=add&pid=111
0
 
zskull88Author Commented:
As you can see with 0asdasd1 as username it is valid and it can't start with a number. and this will only work on username field.
0
 
zskull88Author Commented:
Ray i think this does it so it works for me at least pleae confirm /^[a-z]|[0-9]{2,8}$/i
0
 
Sudaraka WijesingheConnect With a Mentor Web Application ProgrammerCommented:
I think what you are looking for is /^[a-z]{1}[a-z0-9]{7}$/i
If you want to allow any character after the first, replace [a-z0-9] with .
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.