如何编写正则表达式,移除字符串中除逗号、减号外的非数字?
移除非数字字符(保留逗号和减号)的正则表达式解决方案
需求说明
需要移除字符串中所有非数字字符,但必须保留逗号(,)和减号(-),对应示例如下:
'Euro 16.000'→'16000'(点号属于非保留字符,被移除)'Euro 16,00'→'16,00'(逗号保留)'Euro -16,00'→'-16,00'(减号和逗号均保留)
正则表达式
使用反向字符集匹配所有需要移除的字符,表达式为:[^0-9,-]
表达式解释
[^...]:反向匹配规则,即匹配任何不在括号内的字符0-9:匹配0到9的所有数字,和-:明确指定需要保留的符号,因此不会被匹配和移除
代码示例
JavaScript 实现
// 处理带减号和逗号的字符串 const str1 = 'Euro -16,00'; const result1 = str1.replace(/[^0-9,-]/g, ''); console.log(result1); // 输出: "-16,00" // 处理带点号的字符串 const str2 = 'Euro 16.000'; const result2 = str2.replace(/[^0-9,-]/g, ''); console.log(result2); // 输出: "16000"
Python 实现
import re # 处理带逗号的字符串 str1 = 'Euro 16,00' result1 = re.sub(r'[^0-9,-]', '', str1) print(result1) # 输出: "16,00" # 处理带点号的字符串 str2 = 'Euro 16.000' result2 = re.sub(r'[^0-9,-]', '', str2) print(result2) # 输出: "16000"
内容的提问来源于stack exchange,提问作者tilly
相关产品推荐
相关产品推荐

