Back to Home

Multiline mode of anchors ^ $, flag "m"

The multiline mode is enabled by the flag pattern:m. It only affects the behavior of pattern:^ and pattern:$. In the multiline mode they match not only at the beginning and the end of the string, but also at start/end of line.

Searching at line start ^

In the example below the text has multiple lines. The pattern pattern:/^\d/gm takes a digit from the beginning of each line: Without the flag pattern:m only the first digit is matched: That’s because by default a caret pattern:^ only matches at the beginning of the text, and in the multiline mode – at the start of any line.

Searching at line end $

The dollar sign pattern:\( behaves similarly. The regular expression pattern:\d\) finds the last digit in every line Without the flag pattern:m, the dollar pattern:$ would only match the end of the whole text, so only the very last digit would be found.

Searching for

instead of ^ \( To find a newline, we can use not only anchors pattern:^ and pattern:\), but also the newline character
. What’s the difference? Let’s see an example. Here we search for pattern:\d
instead of pattern:\d\(: As we can see, there are 2 matches instead of 3. That's because there's no newline after subject:3 (there's text end though, so it matches pattern:\)). Another difference: now every match includes a newline character match:
. Unlike the anchors pattern:^ pattern:$, that only test the condition (start/end of a line),
is a character, so it becomes a part of the result. So, a
in the pattern is used when we need newline characters in the result, while anchors are used to find something at the beginning/end of a line.

let str = `1st place: Winnie
2nd place: Piglet
3rd place: Eeyore`;

*!*
console.log( str.match(/^\d/gm) ); // 1, 2, 3
*/!*
Example:

Follow the lesson from Microsoft Web-Dev-For-Beginners course

Tags: web,development