Flash cards
Review the key moves
What is the main idea behind Regular Expression Assertions?
Lesson checks
Practice each idea before moving on
Short Mimo-style checks built from this lesson's code, terms, and sequence.
Which statement best captures the main point of this lesson?
Complete the missing token from the example code.
// ___ beginning of stringPut the learning moves in the order that makes the concept easiest to apply.
RegExp Assertions
Assertions matches Boundaries and Lookarounds
String Boundaries and Word Boundaries.
Lookarounds: Lookaheads and Lookbehinds.
// Match beginning of string
const pattern = /^ExampleSite/;
// Match end of string
const pattern = /ExampleSite$/;JavaScript Regex Assertions
| Syntax | Name | Description |
|---|---|---|
| ^ | String boundary | Matches the beginning of a string |
| $ | String boundary | Matches the end of a string |
| \b | Word boundary | Matches the beginning or end of a word |
| \B | Word boundary | Matches NOT the beginning or end of a word |
| (?=...) | Lookahead | Matches the subsequent string |
| (?!...) | Lookahead | Matches NOT the subsequent string |
| (?<=...) | Lookbehind | Matches the previous string |
| (?<!...) | Lookbehind | Matches NOT the previous string |
RegExp ^ Metacharacter
The ^ metacharacter matches the beginning of a string.
Examples
const pattern = /^ExampleSite/;
let text = "ExampleSite Tutorial";
let result = pattern.test(text); // trueRegExp $ Metacharacter
The $ metacharacter matches the end of a string.
Runnable example
const pattern = /ExampleSite$/;
let text = "Hello ExampleSite";
let result = pattern.test(text); // trueThe \b Metacharacter
The \b metacharacter matches the beginning of a word or the end of a word.
Examples
let text = "HELLO, LOOK AT YOU!";
let result = text.search(/\bLO/);RegExp Lookahead x(?=y)
x(?=y) matches "x" if "x" is followed by "y".
Example
let text = "ExampleSite Tutorials";
let pattern = /ExampleSite(?= Tutorials)/;
let result = pattern.test(text);Negative Lookahead x(?!y)
x(?!y) matches "x" if "x" is NOT followed by "y".
Example
let text = "ExampleSite Tutorials";
let pattern = /ExampleSite(?! Tutorials)/;
let result = pattern.test(text);Explanation
(?! Tutorials) asserts that what follows is not " Tutorials".
RegExp Lookbehind (?<=y)x
(?<=y)x matches "x" if "x" is preceded by "y".
Example
let text = "Hello ExampleSite";
let pattern = /(?<=Hello )ExampleSite/;
let result = pattern.test(text);Negative Lookbehind (?<!y)x
(?<!y)x matches "x" only if "x" is NOT preceded by "y".
Example
let text = "Hello ExampleSite";
let pattern = /(?<!Hello ) ExampleSite/;
let result = pattern.test(text);Regular Expression Groups
| Char | Description |
|---|---|
| (x) | Matches x and saves it |
| (?<n>x) | Matches x and labels it n |
| (?flag:x) | Enables flag(s) for x |
| (?flag-flag:x) | Disables flag(s) for x |
RegExp Capturing Groups (x)
Example
let text = "Haha, haha, haha.";
const pattern = /(haha)+/;
let result = text.match(pattern);Explained
- (haha) captures a group of characters
- (haha)+ matches zero or more occurences of the group
- text.match() returns an array of results
- match.groups() returns an array of matches
Named Capturing Groups (?<n>)
Example
const text = "Name: John Doe";
// Using named capturing groups
const regex = /(?<firstName>\w+) (?<lastName>\w+)/;
const match = text.match(regex);
let fName = match.groups.firstName;
let lName = match.groups.lastName;Explained
- (?<firstName>\w+) captures a word and labels it firstName
- (?<lastName>\w+) does the same for lastName
- text.match() returns an array with a groups property
- match.groups() returns an object: {firstName:"John", lastName:"Doe" }
When using capturing groups, the String method match() and the RegExp method exec(), return a match object with a groups property. This property holds the names and the values of the groups.
RegExp Group Modifiers (?flag)
The (?flag) syntax is a group modifier (inline flag modifier).
It allows for modifying flags in a part of a pattern, rather than to the entire pattern.
(?flags:pattern) enables the flags only for the pattern in the group.
Example
let text = "ExampleSite tutorials.";
const pattern = /(?i:WShools) tutorials/;
// Returns true: let result = pattern.test(text);See Also
JavaScript RegExp Flags
JavaScript RegExp Character Classes
JavaScript RegExp Meta Characters
JavaScript RegExp Quantifiers
JavaScript RegExp Patterns
JavaScript RegExp Objects
JavaScript RegExp Methods
Regular Expression Methods
Regular Expression Search and Replace can be done with different methods.
String Methods
| Method | Description |
|---|---|
| match( regex ) | Returns an Array of results |
| matchAll( regex ) | Returns an Iterator of results |
| replace( regex ) | Returns a new String |
| replaceAll( regex ) | Returns a new String |
| search( regex ) | Returns the index of the first match |
| split( regex ) | Returns an Array of results |
RegExp Methods
| Method | Description |
|---|---|
| regex .exec() | Returns an Iterator of results |
| regex .test() | Returns true or false |