Jump to content


This topic is now archived and is closed to further replies.


eregi() chokes on (?= lookahead

Recommended Posts

I am trying to employ a common regex for password verification in PHP 5.0.5. 

The goal is to simply reject passwords that don't meet the length requirement of 8-25 characters, and that don't have at least one each of numbers, upper case and lower case letters.

I grabbed this example from a regex reference site:

My code looks like this:

if (!eregi("^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,25}$",$password) {//do something}

This gives me the following error:
"Warning: eregi() [function.eregi]: REG_BADRPT..."

The problem seems to be with the ?= lookahead operator.  All references suggest this is valid code, but PHP seems to choke on it.  Other regex seem to work fine, so I'm at a loss.

Can any experts offer any ideas?  Thanks in advance.

- David Marks

Share this post

Link to post
Share on other sites
You must use preg_* functions in order to use lookarounds.

Share this post

Link to post
Share on other sites
Excellent!  Thank you for the prompt reply.

I haven't needed preg_ functions until now.  I stumbled around there for a while until I figured out that the expression needed proper delimiters.  I am up and running now.

Thanks again!!  I'd still be lost without your assistance.

Share this post

Link to post
Share on other sites


Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.