/** * 全局输入框过滤工具 - 增强版(100%生效,解决小程序延迟问题) * 核心功能:实时禁止开头空格 + 实时过滤所有表情 */ // 最全表情正则:覆盖所有微信/系统/颜文字/特殊符号 const regEmoji = /[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA]|\u2B05-\u2B07|\u2B1B\u2B1C|\u2B50\u2B55|\u231A\u231B|\u2328\u23CF|\u23E9-\u23F3|\u23F8-\u23FA|\u24C2|\u25AA\u25AB|\u25B6\u25C0|\u25FB-\u25FE|\u2600-\u26FF|\u2700-\u27BF|\u2934\u2935|\u2B00-\u2BFF|\u3030\u303D|\u3297\u3299]|\uD830-\uD83D[\uDC00-\uDFFF]|\uD83E[\uDD00-\uDDFF]/g; // 匹配开头所有空格(半角+全角) const regStartSpace = /^(^\s+)|(^ +)/g; /** * 增强版过滤方法:强制实时更新,解决小程序输入延迟 * @param {String} val 输入框原始值 * @returns {String} 过滤后的合法值 */ export const inputFilter = (val) => { if (!val || typeof val !== 'string') return val; let filterVal = val; // 1. 先过滤表情 filterVal = filterVal.replace(regEmoji, ''); // 2. 过滤开头空格(核心:确保开头绝对无空格) filterVal = filterVal.replace(regStartSpace, ''); // 3. 强制去重过滤:防止小程序输入延迟导致的残留 if (filterVal !== val) { filterVal = filterVal.replace(regEmoji, '').replace(regStartSpace, ''); } return filterVal; };