===== What is a Pattern? =====
The main purpose of regular expressions is to perform advanced pattern matching on text strings. A pattern defines rules so that a computer can recognize a sequence of characters.
Let's take for example, a pattern which matches a 7-digit phone number.
$test = '867-5309';
$pattern = '|^[0-9]{3}-[0-9]{4}$|';
$isphone = preg_match($pattern, $test);
echo 'result = ' . $isphone;
A pattern like this may seem daunting at first if you are new to regular expressions. Let's break down the individual components and see how this pattern works.
* Pipe (**|**) is used to mark the beginning and the end of the pattern. It basically says that the text between the two pipes is the pattern we want to match.
* Caret (**^**) means we want to match the beginning of the string. Without this, the pattern can start matching at any character in the string. With this, the pattern //CAN ONLY// match at the start of the string.
* Brackets (**[** and **]**) indicate that we are defining a set or range characters. By itself, this type of set will only match one character (belonging to the set or range).
* Hypen (**-**) when used within brackets indicates that we are defining a range of characters. So when we say ''[0-9]'', what we mean is any character between 0 and 9 (meaning any digit.)
* Braces (**{** and **}**) are used to indicate the exact number of occurances that the preceding character should match. So our digit should match 3 characters in-a-row.
* Hypen (**-**) when used //OUTSSIDE OF// brackets just matches a normal hyphen character.
* Dollar Sign (**$**) is used to match the end of the search text. By including caret (**^**) and dollar sign (**$**), we are telling the pattern matcher that the pattern must match the entire search string.
So the pattern we have made will only match a 7-digit phone number with a hyphen between the first 3 digits and the last 4 digits. The pattern ''[0-9]'' is such a common pattern, that there exists a special notation to define this (**\d**). You could also do away with the brace notation and just repeat this sequence the required number of times like:
$pattern = '|^\d\d\d-\d\d\d\d$|';
For simple patterns, this type of pattern is much simpler to understand. We leave it up to you to decide which is best for your purposes.