Question

I need a (php) regex to match Yahoo's username rules:

Use 4 to 32 characters and start with a letter. You may use letters, numbers, underscores, and one dot (.).

Was it helpful?

Solution

/^[A-Za-z](?=[A-Za-z0-9_.]{3,31}$)[a-zA-Z0-9_]*\.?[a-zA-Z0-9_]*$/

Or a little shorter:

/^[a-z](?=[\w.]{3,31}$)\w*\.?\w*$/i

OTHER TIPS

/[a-zA-Z][a-zA-Z0-9_]*\.?[a-zA-Z0-9_]*/

And check if strlen($username) >= 4 and <= 32.

A one dot limit? That's tricky.

I'm no regex expert, but I think this would get it, except for that:

[A-Za-z][A-Za-z0-9_.]{3,31}

Maybe you could check for the . requirement separately?

Using lookaheads you could do the following:

^(?=[A-Za-z](?:\w*(?:\.\w*)?$))(\S{4,32})$

Because you didn't specify what type of regex you needed I added a lot of Perl 5 compatible stuff. Like (?: ... ) for non-capturing parens.

Note: I added the missing close paren back in.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top