位置:首页 » 文章/教程分享 » java regex 正则表达式 提取数字和去除数字,过滤数字,提取价格

本文介绍如何通过java regex 正则表达式来提取数字和去除数字,过滤数字,提取价格等操作,供大家参考。

需求:过滤除点号外的所有非数字:

String abc = "价格:0.00元";
Pattern compile = Pattern.compile("\\d+\\.\\d+");
Matcher matcher = compile.matcher(abc);
matcher.find();
String string = matcher.group();//提取匹配到的结果
System.out.println(string);//0.00
需求:只要提取数字其它都不需要
String abc = "手机:1319999999";    
System.out.println(abc.replaceAll("\\D", ""));//1319999999
需求:提取价格出来
public class test_money {
    @Test
    public void test(){
        //0
        //0.1
        //24.13
        String moneyString="1";
        Double extract_cost = extract_cost_dot(moneyString);
        System.out.println("extract_cost:"+extract_cost);
    }
    /**
     * 提取金额,规则为只提取数字和点号,必须有点号
     * 格式可以为0.0或者,11
     * @param cost
     * @return
     */
    public   Double extract_cost_dot(String cost) {
        Pattern compile = Pattern.compile("(\\d+\\.\\d+)|(\\d+)");
        Matcher matcher = compile.matcher(cost);
        matcher.find();
        return Double.valueOf(matcher.group());
    }
}
// 提取数字
String phoneString = "哈哈,13888889999";
// 1
Pattern pattern = Pattern.compile("[^0-9]");
Matcher matcher = pattern.matcher(phoneString);
String all = matcher.replaceAll("");
System.out.println("phone:" + all);
// 2
Pattern.compile("[^0-9]").matcher(phoneString).replaceAll("");
// 提取张三 去除数字
String r_name3 = "张三 13599998888 000000";
Pattern pattern = Pattern.compile("[\\d]");
Matcher matcher = pattern.matcher(r_name3);
System.out.println(matcher.replaceAll("").trim());