|
Posted by frizzle on 07/16/06 13:55
Chung Leong wrote:
> 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]))+$/
/^(?:[a-z]|(?<=[a-z])[-_](?=[a-z]))+$/
wowowow, could you explain a little on this ?
like the : and ?<= parts
(i assume 0-9 should still be included??)
Frizzle.
[Back to original message]
|