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

如何用JavaScript移除字符串中不在允许字符列表内的字符

解决方法

要实现移除字符串中不在允许列表内的字符,你需要结合正则表达式和string.replace()来完成,核心是构建匹配「非允许字符」的正则规则,具体步骤如下:

1. 转义允许字符中的正则特殊符号

你的allowedSymbols里包含*+()\/这类正则特殊字符,直接放到正则里会被解析为语法符号而非普通字符,所以需要先转义它们。可以用这个简单函数处理:

function escapeRegExp(str) {
  return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}

2. 构建否定字符类正则

用转义后的允许字符构建[^...]格式的正则(^在字符类中表示「非」),加上g全局匹配标志,这样就能匹配所有不在允许列表里的字符。

3. 完整可运行代码

把逻辑整合到你的函数中:

function parseEntry(enteredString) {
    let allowedAlphas = 'd';
    let allowedDigits = '0123456789';
    let allowedSymbols = ' ()×*+-=÷\/';
    
    // 转义正则特殊字符
    const escapedAllowed = escapeRegExp(allowedAlphas + allowedDigits + allowedSymbols);
    // 构建匹配所有非允许字符的正则
    const forbiddenCharsRegex = new RegExp(`[^${escapedAllowed}]`, 'g');
    
    // 移除所有非允许字符并返回结果
    return enteredString.replace(forbiddenCharsRegex, '');
}

关键说明

  • [^${escapedAllowed}]:匹配任何不在允许字符列表内的单个字符
  • g标志:确保替换所有匹配到的字符,而非仅第一个
  • 转义函数:必须处理正则特殊字符,否则像*会被解析为「匹配0次或多次」,导致规则完全失效

内容的提问来源于stack exchange,提问作者Sylvan012

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 06:40:29