The flavour you test in should be the flavour you ship in
Regular expression syntax is not one language. Lookbehind, named groups, possessive quantifiers, atomic groups, recursion, the meaning of a dot in multiline mode, whether \d matches digits outside ASCII - all of these vary between engines. A pattern that is correct under PCRE can be a syntax error in JavaScript, or worse, can be valid in both and match different things.
This tester compiles your pattern with the JavaScript engine running the page, so it fails in exactly the way your code will fail and matches exactly what your code will match. If you are writing for a browser or for Node, testing against anything else is testing an approximation of your problem.
Why your pattern only found the first match
Almost always the global flag. Without it a regex stops at the first match, which is what most people want when validating and never what they want when extracting. The neighbouring confusion is the multiline flag, which changes what the anchors mean rather than what the dot matches - and the dotall flag, which changes what the dot matches rather than what the anchors mean.
Seeing every match highlighted at once makes the flag question answer itself. If exactly one region is lit up in a body of text that clearly contains several, that is a missing global flag rather than a wrong pattern, and no amount of rewriting the expression will fix it.
A pattern can hang the tab, and that is worth seeing
Nested quantifiers over alternation - the classic shape being a group that can match the same text several ways, repeated - can make an engine explore an exponential number of paths before it concludes there is no match. On a short string it is instant. On a two hundred character string it never finishes.
Running in the real engine means you meet that behaviour here rather than in production, where the same pattern applied to user-supplied input is a denial of service waiting to be discovered. If a pattern freezes this page, it will freeze your server, and the fix is to rewrite the expression rather than to raise a timeout.