# Semantics of Regex with boundary matchers

The regex /^(abc)$/ matches abc but why not abcdabc, abcdabc also begins with abc and ends with abc. I am not sure about the semantics of this regex. Any explanation is welcome. • Your question isn't very clear. ^ matches the start and $ the end of the string, so it can only match whole strings. – Veedrac Dec 3 '17 at 15:55
• Yes ^ matched beginning and $ matches end so from that perspective /^(abc)$/ should contain abcdabc because abc is prefix and suffix both, but it only matches abc. Why? – gamedev90 Dec 3 '17 at 16:10
• Using that argument xy should match xSy, because x matches xSy and y matches xSy. That's not how regular expressions work; you need to match the whole thing at once. – Veedrac Dec 3 '17 at 17:59
• but /xy/ will match any substring xy because there is no modifier like $, ^, {n} etc – gamedev90 Dec 5 '17 at 11:21 • but my question is does /^abc$/ mean starting with abc and ending with abc and only containing abc, or just starting with abc and ending with abc – gamedev90 Dec 5 '17 at 11:23

What comes after ^ will not be matched to a prefix of the input string. What happens is that ^ is a reference to an event (as is $, they are called anchors). In abstract terms, you can think of the input of a Regex as continuous stream of symbols, unbounded, that is divided in units of limited size, separated from each other by a special symbol. Where should the matching process begin? This is where anchors come to the rescue. In this context, ^ refers to the event of finding the special symbol, and forcing the Regex to match beginning with whatever comes right after, instead of$\unicode{x2013}$for instance$\unicode{x2013}\$ continuously trying to match a string starting with each symbol from the input, and backtracking to the next, in case of failure.