const regex = /<(script|style)((?:(?!src|nonce).)*?)>/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('<(script|style)((?:(?!src|nonce).)*?)>', 'gm')
const str = `<!DOCTYPE html>
<html class="no-js" lang="en-US">
<script>window._wpemojiSettings = {"baseUrl":"https:\\/\\/s.w.org\\/images\\/core\\/emoji\\/13.0.0\\/72x72\\/","ext":".png","svgUrl":"https:\\/\\/s.w.org\\/images\\/core\\/emoji\\/13.0.0\\/svg\\/","svgExt":".svg","source":{"wpemoji":"https:\\/\\/localhost:32810\\/wp-includes\\/js\\/wp-emoji.js?ver=5.6-alpha-48683-src","twemoji":"https:\\/\\/localhost:32810\\/wp-includes\\/js\\/twemoji.js?ver=5.6-alpha-48683-src"}};
} );</script>
<style>img.emoji {padding: 0 !important;}</style>
<style id='twentytwenty-style-inline-css'>.color-accent{ color: #cd2653; }</style>
<script src='https://localhost:32810/wp-content/themes/twentytwenty/assets/js/index.js?ver=1.5' id='twentytwenty-js-js' async></script>
<script>document.documentElement.className = document.documentElement.className.replace( 'no-js', 'js' );</script>
<style>.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}</style>
<style media="print">#wpadminbar { display:none; }</style>
<style media="screen">html { margin-top: 32px !important; }</style>
</head>
<body>
<script test>(function() {var request; b[c] = b[c].replace( rcs, ' ' );}());</script>
<script src='https://localhost:32810/wp-includes/js/hoverintent-js.min.js?ver=2.2.1' id='hoverintent-js-js'></script>
<script src='https://localhost:32810/wp-includes/js/admin-bar.js?ver=5.6-alpha-48683-src' id='admin-bar-js'></script>
<script src='https://localhost:32810/wp-includes/js/wp-embed.js?ver=5.6-alpha-48683-src' id='wp-embed-js'></script>
<script test>var t, e = location.hash.substring(1);</script>
</body>
</html>`;
const subst = `<$1 nonce="test"$2>`;
// 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