You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

正则表达式问题:移除非字母数字字符时如何保留空格?

解决正则移除非字母数字但保留空格的问题

嗨,这个问题我之前做字符串清理时也碰到过!你的正则之所以会删掉空格,核心原因是空格不在你定义的允许字符集合里——原正则[^\\p{IsAlphabetic}\\p{IsDigit}]的逻辑是“匹配所有不是字母也不是数字的字符”,空格刚好属于这类被匹配的范围,所以会被替换删除。

两种实用修改方案:

  • 如果只想保留普通空格(不含制表符、换行等其他空白),直接把空格加入允许集合即可:
    [^\\p{IsAlphabetic}\\p{IsDigit} ]
    
  • 如果需要保留所有空白字符(空格、制表符、换行符等),可以用正则的\\s元字符代替空格:
    [^\\p{IsAlphabetic}\\p{IsDigit}\\s]
    

实际效果对比:

假设原字符串是:Hi! This is a test. 123$

  • 用原正则处理后结果:HiThisisatest123
  • 用修改后的正则处理后结果:Hi This is a test 123

这样就能精准保留空格,同时清理掉其他非字母数字的符号啦~

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

火山引擎 最新活动