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

如何获知正则表达式匹配并移除的字符?附JS代码示例

如何收集字符串处理中被移除的字符

原代码分两步清理了字符串:先是删掉指定标点,再把连续多空格缩成单个空格。要搞清楚哪些字符被删、并把它们存起来,可以按下面的方式改代码:

1. 先抓被删掉的标点

原代码用正则匹配标点直接替换为空,我们可以先把所有匹配到的标点捞出来存好:

var s = "This., -/ is #! an $ % ^ & * example ;: {} of a = -_ string with `~)() punctuation";
// 收集所有被移除的标点,没匹配到就返回空数组
var removedPunctuation = s.match(/[.,\/#!$%\^&\*;:{}=\-_`~()]/g) || [];
// 原逻辑保留,删掉标点
var punctuationless = s.replace(/[.,\/#!$%\^&\*;:{}=\-_`~()]/g,"");

2. 再抓被缩减的多余空格

第二步处理连续空格时,用replace的回调函数,每次匹配到连续空格就把它记录下来:

var removedSpaces = [];
// 处理空格时,把匹配到的连续空格存进数组,再替换成单个空格
var finalString = punctuationless.replace(/\s{2,}/g, function(match) {
  removedSpaces.push(match);
  return ' ';
});

3. 合并所有被移除的内容

如果要把两类被删内容放一块,直接合并两个数组就行:

var allRemoved = removedPunctuation.concat(removedSpaces);

拿示例字符串测试的话,removedPunctuation会包含所有被删掉的标点符号,removedSpaces里会存原字符串中-/后面的那两个连续空格,allRemoved就是所有被移除内容的集合。


内容的提问来源于stack exchange,提问作者Roger A. Leite

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 03:24:24