Jump to content

Archived

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

david.marks

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:
("^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,25}$

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.