|
Posted by frizzle on 07/16/06 14:04
frizzle wrote:
> 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.
Still curious after the explanation, but just letting you know it works
axactly as it should ..
Frizzle.
Navigation:
[Reply to this message]
|