日期:2014-05-20  浏览次数:20997 次

正则表达式问题
如何用 正则表达式 效验 货币千位符 是否满足?

------解决方案--------------------
先举一两个例子,条件和效果分别是什么?
------解决方案--------------------
Java code


public class TestMoney {
    public static void main(String[] args) {
    String[] moneys = { 
        "1,000,000.00", 
        "1,000,000", 
        "1000,000.00",
        "1000,000.00" 
        };
    String regx = "1[\\d]{0,2}(,[\\d]{3})*(\\.[\\d]{2}){0,1}";
    for (String money : moneys) 
        System.out.println(money.matches(regx));
    }
}
//根据你给出的条件我只能,总结下面的规律
//如果有小数点,则有两位小数位
//小数点之前(或者无小数点),最高位是“1”,除了最高字段可能为1,2,3位,每个字段三位,字段之间由逗号隔开

/*
 
true
true
false
false
 
 */

------解决方案--------------------
Java code

public static void main(String[] args) {
        String[] moneys = { 
                "0",
                "1",
                "10",
                "100", 
                "1000",
                "1,000",
                "10000",
                "10,000",
                "100000",
                "100,000",
                "0.1",
                "0.11",
                "0.111",
                "1.1",
                "1.11",
                "1.111"
                };
        for (String money : moneys) {
            Matcher m = Pattern.compile("0|[1-9]\\d{0,2}(,\\d{3})*|[1-9]\\d{0,2}(,\\d{3})*\\.\\d{1,2}|0\\.\\d{1,2}").matcher(money);
            System.out.println(m.matches());    }
        }