You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript去除不规则空白符EMSP并校验Modem ID

解决方案

问题根源

原代码里的trim()只能移除ASCII范围内的空白字符(普通空格、制表符、换行符等),处理不了EMSP(全角空格,Unicode U+2003)这类非ASCII不规则空白符,导致这类空白可能被保留;同时原正则验证逻辑未针对性检测这类空白,出现不符合预期的放行情况。

修改后的代码

var modemID = source.u_modem_id.toString();
// 匹配所有Unicode空白符(含EMSP、ENSP、NBSP等不规则空白)
var unicodeWhitespaceRegex = /\s/u;
// 全局移除所有Unicode空白符
var cleanedModID = modemID.replace(/\s+/gu, '');
// 验证仅允许字母数字的正则
var alphanumericRegex = /^[a-zA-Z0-9]*$/;

// 检测原Modem ID是否存在不规则空白符,存在则触发错误
if (unicodeWhitespaceRegex.test(modemID)) {
    log.error('Invalid Modem ID: Contains irregular whitespace characters.');
    // 若需直接忽略该数据,可取消下一行注释
    // ignore = true;
}

// 验证处理后的ID是否仅含字母数字,不合法则忽略
if (!alphanumericRegex.test(cleanedModID)) {
    log.error('Invalid Modem ID: Only numbers and letters are allowed.');
    ignore = true;
}

// 后续可使用cleanedModID作为处理后的合法ID
// source.u_modem_id = cleanedModID;

代码说明

  • \s/u:启用Unicode模式(u标志),让\s匹配所有Unicode标准定义的空白字符,覆盖EMSP这类不规则空白。
  • replace(/\s+/gu, ''):通过全局匹配(g标志)移除所有Unicode空白符,彻底清理不规则空白。
  • 分两步验证:先检测原ID中的不规则空白并报错,再验证清理后的ID是否符合字母数字要求,同时保留清理后的可用ID。

内容的提问来源于stack exchange,提问作者Muhammad Arif Mohd Nai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 20:15:17