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