A coworker recently asked me how to have a regular expression check if something does *not* start with a certain value. For example, how to tell if an input value does not start with 'abc'.

Note that it's very easy to see if something does start with a certain value, just use the anchor-to-first-start char '^'. For example, this regex will check for all strings that start with 'abc' (followed by any \w character(s)):

^abc\w+

To see that something does not start with a given value, use the Grouping Construct 'Zero-width negative lookahead assertion":

^**(?!abc)**\w+

This would handle the following cases:

Pass - none of these start with 'abc': | Fail - all of these start with 'abc': |

defg ab xyz 11999 | abc abcdef |

Note that there are four similar grouping constructs based on the combos of Positive/Negative - Lookahead/Lookbehind

- Positive Lookahead
- Negative Lookahead
- Positive Lookbehind
- Negative Lookbehind

You can download a free regex editor from MVP Roy Osherove