如何优雅实现移除字符串中所有英文字母,保留数字及各类符号
字符串移除所有英文字母的实现方案
核心逻辑是通过正则表达式批量匹配所有大小写英文字母,直接替换为空即可实现需求,无需多次调用REPLACE函数,单语句即可完成,会自动保留所有非英文字母的字符(数字、符号等均不受影响)。
不同场景实现示例
1. Python 实现
import re def remove_letters(s: str) -> str: return re.sub(r'[a-zA-Z]', '', s)
测试效果:
- 输入
'AA123A'→ 输出'123' - 输入
'AB-123-CD%'→ 输出'-123-%'
2. JavaScript 实现
function removeLetters(str) { // 加g修饰符开启全局匹配,避免只替换第一个匹配到的字母 return str.replace(/[a-zA-Z]/g, ''); }
3. SQL 实现
支持正则的数据库(MySQL 8.0+、PostgreSQL、Oracle等)可直接调用正则替换函数:
SELECT REGEXP_REPLACE(待处理字段名, '[a-zA-Z]', '') AS 处理后字段 FROM 表名;
不支持正则的旧版MySQL可以用TRANSLATE函数简化实现,无需嵌套26层REPLACE:
SELECT TRANSLATE(待处理字段名, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', '') AS 处理后字段 FROM 表名;
如果仅需移除大写或者小写英文字母,调整正则匹配范围即可,比如只移除大写用[A-Z]、只移除小写用[a-z]。
内容的提问来源于stack exchange,提问作者Sinnie
相关产品推荐
相关产品推荐

