/^(Hello|Bonjour) dotJS!(.+)$/ Match a string that starts with "Hello" or "Bonjour" followed by " dotJS!", capture more than one character until the end.
/^(?:Hello|Bonjour) dotJS!(.+)$/ .exec( "Hello dotJS! How are you?" ) [ 0: "Hello dotJS! How are you?", 1: " How are you?" ] (?: ...) – there are non-capturing groups in JavaScript
/^(?:Hello|Bonjour) dotJS!(?.+)$/ .exec( "Hello dotJS! How are you?" ) [ 0: "Hello dotJS! How are you?", 1: " How are you?", groups: { rest: " How are you?" } ]
/^(?:Hello|Bonjour) dotJS!(?.+)$/ .exec( "Hello dotJS! How are you?" ) [ 0: "Hello dotJS! How are you?", 1: " How are you?", groups: { rest: " How are you?" } ]
/^(?:Hello|Bonjour) dotJS!(?.+)$/ .exec( "Hello dotJS! How are you?" ) [ 0: "Hello dotJS! How are you doing?", 1: " How are you doing?", groups: { rest: " How are you?" } ] (? ...) – there are named capture groups in JavaScript
/^(?:Hello|Bonjour) dotJS!(?.+)$/ .exec( "Hello dotJS! How are you?" ) [ 0: "Hello dotJS! How are you?", 1: " How are you doing?", groups: { rest: " How are you?" } ]
/^(Bonjour) \1 dotJS!(?.+)$/ .exec( "Bonjour Bonjour dotJS! How are you?" ) [ 0: "Hello dotJS! How are you?", 1: "Bonjour" 2: " How are you?", groups: { rest: " How are you?" } ]
/^(Bonjour) \1 dotJS!(?.+)$/ .exec( "Bonjour Bonjour dotJS! How are you?" ) [ 0: "Hello dotJS! How are you doing?", 1: "Bonjour" 2: " How are you?", groups: { rest: " How are you?" } ] \1, \2, ... – there are capture group back references in JavaScript
/^(Bonjour) \1 dotJS!(?.+)$/ .exec( "Bonjour Bonjour dotJS! How are you?" ) [ 0: "Hello dotJS! How are you?", 1: "Bonjour" 2: " How are you?", groups: { rest: " How are you?" } ]
/^(?:Bonjour) dotJS!(?.+) \k$/ .exec( "Bonjour dotJS! How are you? How are you?" ) [ 0: "Bonjour dotJS! How are you? How are you?", 1: " How are you?", groups: { rest: " How are you?" } ]
/^(?:Bonjour) dotJS!(?.+) \k$/ .exec( "Bonjour dotJS! How are you? How are you?" ) [ 0: "Bonjour dotJS! How are you? How are you?", 1: " How are you?", groups: { rest: " How are you?" } ] \k – there are named capture group back references in JavaScript
/^(?:Bonjour) dotJS!(?.+)$/ .exec( "Bonjour dotJS! How are you?" ) [ 0: "Bonjour dotJS! How are you?", 1: " How are you?", groups: { rest: " How are you?" } ]
/^(?:Bonjour) dotJS!(?.+)$/s .exec( "Bonjour dotJS! How are\nyou?" ) [ 0: "Bonjour dotJS! How are↵you?", 1: " How are↵you?", groups: { rest: " How are↵you?" } ] / .../s – the dotall flag really captures every character