const regex = /(?:[a-z]+:\/\/)?(?:[a-z\d-]+\.)+(?:a(?:ero|rpa)|biz|co(?:m|op)|edu|gov|in(?:ternal|fo|t)|jobs|m(?:il|useum)|n(?:a(?:me|to)|et)|org|pro|travel|local|[a-z]{2})(?::\d{1,5})?(?:\/[\w.~-]+)*(?:\/[\w.-]*(?:\?[\w+.%=&;-]*)?)?(?:#[\w!$&'()*+.=~:@\/?-]*)?(?!\S)/gi;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(?:[a-z]+:\\\/\\\/)?(?:[a-z\\d-]+\\.)+(?:a(?:ero|rpa)|biz|co(?:m|op)|edu|gov|in(?:ternal|fo|t)|jobs|m(?:il|useum)|n(?:a(?:me|to)|et)|org|pro|travel|local|[a-z]{2})(?::\\d{1,5})?(?:\\\/[\\w.~-]+)*(?:\\\/[\\w.-]*(?:\\?[\\w+.%=&;-]*)?)?(?:#[\\w!$&\'()*+.=~:@\\\/?-]*)?(?!\\S)', 'gi')
const str = `www.example.com is a cool website`;
const subst = `<a href="$&">$&</a>`;
// 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