如何使用JavaScript校验输入内容中连续2个及以上的空白字符?
问题分析
你手上的旧代码只做了单一场景判断:当输入内容长度大于1、且最后一位是空格时抛错。这套逻辑既识别不了字符串中间的连续空格,也识别不了尾部2个及以上的连续空格,满足不了当前的校验要求。
实现方案
核心思路是用正则匹配字符串任意位置出现的2个及以上连续空白字符,只要匹配命中就直接返回校验错误,不管连续空白出现在头部、中间还是尾部,只要内容里没清理干净就会持续触发提示。
- 如果仅需要拦截连续半角空格,使用以下代码:
if (value && / {2,}/.test(value)) { return Promise.reject('Please remove consecutive blanks'); }
- 如果需要把制表符、全角空格等所有空白字符都纳入连续判定,使用以下代码:
if (value && /\s{2,}/.test(value)) { return Promise.reject('Please remove consecutive blanks'); }
如果你需要保留原有「禁止尾部带单个空格」的校验规则,直接把两段逻辑合并即可:
if (value) { // 拦截2个及以上连续空格 if (/ {2,}/.test(value)) { return Promise.reject('Please remove consecutive blanks'); } // 保留原有尾部单空格校验 if (value.length > 1 && value[value.length - 1] === ' ') { return Promise.reject('Please remove trailing blanks'); } }
逻辑说明
正则/ {2,}/会全局扫描整个字符串,只要存在连续2个及以上半角空格就会返回匹配成功,完全适配你逐字符返回的实时输入场景:不管用户是正在输入连续空格,还是之前输入的连续空格没有删除,每次输入触发校验时都会被检测到,直到连续空格被全部处理为单个空格才会放行。
内容的提问来源于stack exchange,提问作者Francisco.js
相关产品推荐
相关产品推荐

