Question: I want to find all the demo words using PHP and regEx.

```
$input ='demo';
$pattern = ''; //$input can be used along with regex, please help here 
$text = 'This is dem*#o text, contains de12mo3 text, is .demo23* text' 

if(preg_match($pattern, $text))
{
 echo 'found';
}else{
 echo'not found';
}

```

the search word `demo` in the `text` may be present in the following format

```
1) may start with special characters/numbers Eg. "12*demo"
2) may contain special characters/numbers within the word Eg.  "de12*mo"
3) may end with special characters/numbers Eg. "demo12*"

```

please help I am stuck,
thanks in advance!

Note: `The $input can be max. of 15 in length`

Answer: 
The Solution
------------

I would start by removing all special characters and numbers from the string, and then matching the word using word boundaries:

```
$cleaned = preg_replace('/[^a-z ]+/i', '', 'This is dem*#o text, contains de12mo3 text, is .demo23* text');

preg_match_all('/\bdemo\b/i', $cleaned, $matches, PREG_OFFSET_CAPTURE);

var_dump($matches);

```

Will give you ([Codepad Demo](http://codepad.viper-7.com/iaAaZB)):

```
array(1) {
  [0] => array(3) {
    [0] => array(2) {
      [0] => string(4) "demo"
      [1] => int(8)
    }

    [1] => array(2) {
      [0] => string(4) "demo"
      [1] => int(27)
    }

    [2] => array(2) {
      [0] => string(4) "demo"
      [1] => int(40)
    }
  }
}

```

Explanation
-----------

The first line replaces any characters in your string (called the subject argument) that match `/[a-z ]+/i` with '', essentially removing the characters. The regex matches any character (or group of characters) that is not (`^`) the letters `a-z` or a space. The `i` flag tells regex that the search should be case insensitive (This saves us from writing `a-zA-Z`).

The next line uses [word boundaries](http://www.regular-expressions.info/wordboundaries.html) to match the word 'demo'. However, you could substitute in any word.

New Regex Techniques
--------------------

* [`preg_replace()`](http://php.net/preg-replace)
* [`preg_match_all()`](http://php.net/preg-match-all)
* [Word Boundaries](http://www.regular-expressions.info/wordboundaries.html)
* [Negated Character Classes](http://www.regular-expressions.info/charclass.html#negated)
```
/\b[^a-z]*d[^a-z]*e[^a-z]*m[^a-z]*o[^a-z]*\b/i

```

Matches anything but a-z between the demo characters