The caret ^ and dollar $ characters have special meaning in a regexp. They are called âanchorsâ.
The caret ^ matches at the beginning of the text, and the dollar $ â at the end.
For instance, letâs test if the text starts with Mary:
let str1 = "Mary had a little lamb";
alert( /^Mary/.test(str1) ); // true
The pattern ^Mary means: âstring start and then Maryâ.
Similar to this, we can test if the string ends with snow using snow$:
let str1 = "its fleece was white as snow";
alert( /snow$/.test(str1) ); // true
In these particular cases we could use string methods startsWith/endsWith instead. Regular expressions should be used for more complex tests.
Testing for a full match
Both anchors together ^...$ are often used to test whether or not a string fully matches the pattern. For instance, to check if the user input is in the right format.
Letâs check whether or not a string is a time in 12:34 format. That is: two digits, then a colon, and then another two digits.
In regular expressions language thatâs \d\d:\d\d:
let goodInput = "12:34";
let badInput = "12:345";
let regexp = /^\d\d:\d\d$/;
alert( regexp.test(goodInput) ); // true
alert( regexp.test(badInput) ); // false
Here the match for \d\d:\d\d must start exactly after the beginning of the text ^, and the end $ must immediately follow.
The whole string must be exactly in this format. If thereâs any deviation or an extra character, the result is false.
Anchors behave differently if flag m is present. Weâll see that in the next article.
Anchors ^ and $ are tests. They have zero width.
In other words, they do not match a character, but rather force the regexp engine to check the condition (text start/end).
Comments
<code>tag, for several lines â wrap them in<pre>tag, for more than 10 lines â use a sandbox (plnkr, jsbin, codepenâ¦)