Page 1 of 1

Simple RegEx Pattern- Help with the last bit

Posted: Wed Oct 19, 2011 7:36 am
by magnetica2
Hi All

Need a little help with my RegEx, I am half way there but can't figure out the last bit

I want the Regex to match.

123-456-789

I don't mind how long the numbers are, but the dashes in the middle can only be 1 long

My regex so far
([^-]([0-9]+[^-]))

This matches
123-456-789
but will also match
123-456----789

I just need the Regex to only allow 1 dash in the middle

Thanks for any help

Re: Simple RegEx Pattern- Help with the last bit

Posted: Wed Oct 19, 2011 7:43 am
by Apollo
magnetica2 wrote:My regex so far
([^-]([0-9]+[^-]))
^ between [ ] means "not". So you're actually matching: any char except dash, followed by one or more digits, followed by any char except dash again. Even just "123" will match this pattern already.

Try this:

Code: Select all

preg_match( '#^[0-9]+-[0-9]+-[0-9]+$#', $yourString );
This regexp means: one or more digits, one dash, one or more digits, one dash, one or more digits.

Re: Simple RegEx Pattern- Help with the last bit

Posted: Wed Oct 19, 2011 8:11 am
by magnetica2
Thanks but that restricts me to 3 sections
I found the right Regex
[\d]+(-[\d]+)*

Re: Simple RegEx Pattern- Help with the last bit

Posted: Wed Oct 19, 2011 9:03 am
by magnetica2
LOL. This Regex works but because im using it in the CodeIgniter frameworks Routes.php

The braces within braces mess it all up? Any ideas?