正则表达式问题
如何用 正则表达式 效验 货币千位符 是否满足?
[解决办法]
先举一两个例子,条件和效果分别是什么?
[解决办法]
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位,每个字段三位,字段之间由逗号隔开/* truetruefalsefalse */
[解决办法]
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()); } }