
本文介绍在java中使用正则表达式快速提取字符串中所有连续数字的方法,适用于如"task123"→123等场景,代码简洁高效,无需手动遍历字符。
在实际开发中,我们常需从混合文本(如"Task123"、"Order#4567-2024"或"v2.3.1")中提取其中的数字部分。最直接且健壮的方式是利用正则表达式 [^0-9](匹配所有非数字字符),再通过 String.replaceAll() 将其全部替换为空字符串,从而保留仅有的数字序列。
✅ 示例代码:
String str = "Task1234";
String numberStr = str.replaceAll("[^0-9]", "");
System.out.println(numberStr); // 输出:1234
// 若需转为整数类型(注意:确保数字不为空且在int范围内)
if (!numberStr.isEmpty()) {
int number = Integer.parseInt(numberStr);
System.out.println(number); // 输出:1234
}⚠️ 注意事项:
- 该方法会合并所有数字(如 "AB12CD34" → "1234"),若需提取首个数字子串(如只取12),应改用 Pattern.compile("\\d+").matcher(str).find();
- 若原字符串不含数字,结果为空字符串 "",调用 Integer.parseInt("") 会抛出 NumberFormatException,务必提前校验;
- 对于含负号、小数点或科学计数法的字符串(如 "-12.5"),此方法不适用,需更复杂的正则或专用解析逻辑。
总结:replaceAll("[^0-9]", "") 是提取字符串中全部数字字符的轻量级通用解法,适合日志解析、编号提取、版本号清洗等典型场景,兼顾可读性与执行效率。










