正则 匹配数字问题

本文介绍了一种年薪输入的有效性验证方法,通过使用正则表达式去除小数点后的多余0,并判断输入是否为有效的非负浮点数或非负整数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天遇到个需要用正则进行匹配的问题

输入年薪,匹配可以为0,可以是正整数,也可以是小数,

网上看了很多帖子,没有能直接同时匹配的,0125 ,01.125 , 00.0  这种..总是匹配错误

作为正则小白,只能换个方法匹配2次。

先去除小数点后多余的0 

public static String removeZeroAndDot(String s) {
	if (s.indexOf(".") > 0) {
	<span style="white-space:pre">	</span>// 去掉多余的0
	<span style="white-space:pre">	</span>s = s.replaceAll("0+?$", "");
	<span style="white-space:pre">	</span>// 如最后一位是.则去掉
	<span style="white-space:pre">	</span>s = s.replaceAll("[.]$", "");
	}
<span style="white-space:pre">	</span>return s;
}

匹配数字

<span style="white-space:pre">	</span>public static boolean isStandardNum(String num) {

		// 正则表达式:匹配非负浮点数(正浮点数 + 0)
		Pattern pattern1 = Pattern
				.compile("^[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*|0?\\.0+|0$");
		Pattern pattern2 = Pattern.compile("^[1-9]\\d*|0$");
		// 正则表达式:匹配非负整数(正整数 + 0)
		try {
			if (num != null && num.length() != 0) {
				Matcher matcher1 = pattern1.matcher(num);
				Matcher matcher2 = pattern2.matcher(num);
				if (matcher1.matches() || matcher2.matches()) {
					return true;
				}
			}
		} catch (Exception e) {
			return false;
		}
		return false;
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值