I am trying to capture 8 digit phone numbers in free text. This should be ignored if a particular string appears before.
My regex:
(\b(\+?001|002)?[-]?\d{4}(-|\s)?\d{4}\b)
To Capture:
+001 12345678
12345678
Not Capture:
TTT-12345678-123
TTT-12345678
I am trying to use negative look behind as below example:
\w*(?<!foo)bar
But the above works only if the regex doesn't have subsequent groups.
You may use
(?<!TTT-)(?<!\w)(?:\+?001|002)?[-\s]?\d{4}[-\s]?\d{4}\b
See the regex demo
Details
(?<!TTT-) - no TTT- allowed immediately on the left(?<!\w) - no word char allowed immediately on the left(?:\+?001|002)? - an optional non-capturing group matching 1 or 0 occurrences of +001, 001 or 002[-\s]? - an optional - or whitespace\d{4} - any four digits[-\s]?\d{4} - - an optional - or whitespace and any four digits\b - a word boundary.If the number can be glued to a word char on the right, replace the \b word boundary with the right-hand digit boundary, (?!\d).