Lookahead and Lookbehind assertions, also known as Lookaround assertions are basically special type of non-matching group. It is a condition that must be satisfied in order to return the match to an expression. These are of zero-length i.e. the match is grouped and there is no change in the position of regex pointer.
Positive Lookahead Assertion
Syntax : /(?=regex-expression)/
Example : Let’s say if we want to capture the word “background” only if it is in a camel case word “backgroundColor”.
*/background(?=Color)/ *
=> This will match “background” as a group for text “backgroundColor” and no match for “backgroundText”
Negative Lookahead Assertion
Syntax : /(?!regex-expression)/
Example : Let’s say if we want to capture the word “background” only if it is NOT in a camel case word “backgroundColor”.
*/background(?!Color)/ *
=> This will match “background” as a group for text “backgroundText” and no match for “backgroundColor”
Positive Lookbehind Assertion
Syntax : /(?<=regex-expression)/
Example : Let’s say if we want to capture the word “hockey” only if is preceeded with “ice” i.e. for the word icehockey
*/(?<=ice)hockey/ *
=> This will match “hockey” as a group for text “icehockey” and no match for “fieldhockey”
Negative Lookbehind Assertion
Syntax : /(?<!regex-expression)/
Example : Let’s say if we want to capture the word “hockey” only if is NOT preceeded with “ice” i.e. for the word icehockey
*/(?<!ice)hockey/ *
=> This will match “hockey” as a group for text “fieldhockey” and no match for “icehockey”