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

Java中如何编写正则表达式从字符串中提取数字?

故障原因
  • 你使用的正则表达式\\d{10}规则为匹配连续10位数字,但示例字符串1234568asdjhgsd中的数字部分只有7位,无法命中匹配规则,因此m.find()始终返回false,不会进入while循环执行输出逻辑。
解决方案

如果你的需求是提取字符串中所有连续的数字段,不需要限制长度,将正则规则修改为\\d+即可,+代表匹配1个及以上的前置规则(也就是数字)。

修正后的核心代码如下:

textView.setText("1234568asdjhgsd");

String str = (String) textView.getText();

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // 修改正则为匹配1个及以上连续数字
        Pattern p = Pattern.compile("\\d+");
        Matcher m = p.matcher(str);
        
        while (m.find()){
            String xxx = m.group();
            System.out.println(xxx);
        }
    }
});

如果你确实需要匹配固定长度的数字(比如10位编号),请先确认输入字符串中存在对应长度的连续数字,再调整正则中{}内的数值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:06:02