SOURCE

var toHtml = function(val) {
    if (typeof val != 'string') return '';
    var entityMap = {
        "&": "&",
        "<": "&lt;",
        ">": "&gt;",
        '"': '&quot;',
        "'": '&#39;',
        "/": '&#x2F;'
    };
    return String(val).replace(/[&<>"'\/]/g, function (s) {
        return entityMap[s];
    });
}
console.log(toHtml('hhhhh'),'5555')
handleMessage = function (text) {
    let urlRegex = /(?:https?:\/\/)?(?:www\.)?((?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}|(?:\d{1,3}\.){3}\d{1,3})(?:\/[a-zA-Z0-9-]+)*\??(?:[a-zA-Z0-9&\?%_.\-=,:;\~()\/]+)*/gi;
    let match = text.match(urlRegex);
    let handledString = ""; // 初始化处理后的字符串
    if (match) {
        // var lastIndex = 0;
        for (let i = 0; i < match.length; i++) {
            var noUrlPart = text.slice(0, text.indexOf(match[i])); // 非网址链接部分
            var handlednoUrlPart = toHtml(noUrlPart); // 处理非网址链接部分
            text = text.slice(text.indexOf(match[i]));
            handledString += handlednoUrlPart; // 将处理后的非网址链接部分和网址链接拼接到处理后的字符串中
            let dom = `<span class="message-url" data-url="${match[i]}">${match[i]}</span>`;
            handledString += dom; // 将处理后的非网址链接部分和网址链接拼接到处理后的字符串中
            text = text.slice(match[i].length);
        }
    } else {
        handledString = base.toHtml(text)
    }
    return handledString;
};
let a = "1还好、https://www.baidu.com 2、www.baidu.com";

console.log(handleMessage(a))
console 命令行工具 X clear

                    
>
console