|
Posted by Chung Leong on 07/15/06 20:50
frizzle wrote:
> Hi group,
>
> I have a function which validates a string using preg match.
> A part looks like
>
> if( !preg_match( '/^([a-z0-9]+(([a-z0-9_-]*)?[a-z0-9])?)$/', $string )
> ||
> preg_match( '/(--|__)+/' ,$string) ) {
>
> i wonder how i could combine those two into one ...
> I tried a few different options of putting the second match into the
> first one,
> using things like [^__]+ etc, but nothing worked for me.
> it should prevent double (or more) dashes or underscores behind each
> other.
> hello-there = ok
> hello--there != ok
>
> Any help would be great.
>
> Frizzle.
What you need is a lookahead and lookbehind assertion on the dash and
underscore, stating that they're acceptable only if there're letters in
front and behind them:
/^(?:[a-z]|(?<=[a-z])[-_](?=[a-z]))+$/
[Back to original message]
|