const regex = /^(♪\h+[A-Za-z].*?(?:\R[A-Za-z].*?)?)♪?$/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('^(♪\\h+[A-Za-z].*?(?:\\R[A-Za-z].*?)?)♪?$', 'gm')
const str = `==============================
BEFORE
==============================
400
00:31:44,633 --> 00:31:45,716
Come on.
401
00:31:59,940 --> 00:32:02,399
Caleb used to do that
when he ate.
402
00:32:03,902 --> 00:32:05,069
Pull my hair like that.
410
00:32:46,653 --> 00:32:48,654
♪ Saying</i>
411
00:32:48,738 --> 00:32:52,241
♪ This is my message to you</i>
412
00:32:56,163 --> 00:32:57,538
♪ Don't worry</i>
636
00:55:59,545 --> 00:56:02,296
♪ You don't own me
637
00:56:02,798 --> 00:56:06,676
♪ I'm not just
one of your many toys
638
00:56:06,969 --> 00:56:09,929
♪ You don't own me
639
00:56:10,347 --> 00:56:16,394
♪ Don't say
I can't go with other boys
640
00:56:16,728 --> 00:56:20,106
♪ And don't tell me
what to do
641
00:56:20,816 --> 00:56:24,026
♪ Don't tell me what to say ♪
642
00:56:24,278 --> 00:56:27,822
♪ And please,
when I go out with you ♪
643
00:56:28,365 --> 00:56:31,742
♪ Don't put me on display ♪
644
00:56:31,952 --> 00:56:36,080
♪ 'Cause you don't own me ♪`;
const subst = `$1 ♪`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions