decimal 正则表达式

博客给出了适用于decimal(18, 4)的正则表达式:^(0|[1-9]\\d{0,17})(\\.\\d{0,4})?$ ,可用于相关的验证工作。

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

^(0|[1-9]\d{0,17})(\.\d{0,4})?$  这个适应于decimal(18,4)

### 匹配十进制数字的正则表达式 为了匹配十进制数字,我们需要定义一个能够识别非负整数以及带小数点的浮点数的正则表达式。以下是详细的解释和实现。 #### 非负整数 对于非负整数,我们可以使用以下正则表达式来匹配: ```regex ^\d+$ ``` - `^` 表示匹配字符串的起始位置。 - `\d+` 表示匹配一个或多个数字字符(0-9)。 - `$` 表示匹配字符串的结束位置[^1]。 这将确保我们只匹配由连续数字组成的字符串。 #### 浮点数 如果需要支持浮点数,则可以扩展正则表达式如下: ```regex ^-?(?:\d+(\.\d*)?|\.\d+)$ ``` - `-?` 可选地匹配负号。 - `(?:...)` 是一个非捕获组,用于组合不同的可能性而不创建额外的分组。 - `\d+` 匹配一个或多个数字。 - `(\.\d*)?` 匹配一个小数点后跟零个或多个数字的部分,这部分是可选的。 - `|\.\d+` 或者单独的小数点后跟随至少一位数字的情况。 - 整体结构允许匹配形如 `.5`, `3.14`, 和 `-7.89` 这样的数值[^2]。 #### 完整的十进制数匹配 如果我们希望既支持非负整数也支持浮点数,并且排除科学计数法形式或其他复杂情况,那么完整的正则表达式可能是这样: ```regex ^(?![-+]?\.$)(?!$)[-+]?(?:\d+(?:\.\d*)?|\.\d+)$ ``` - `(?![-+]?\.$)` 排除仅有一个符号加小数点的情况,比如 `.` 或 `-.` - `(?!$)` 确保不会匹配空串。 - `[-+]?` 允许存在前导的正负号。 - 后续逻辑同之前描述一致[^3]。 以上正则表达式的功能涵盖了绝大多数常见的十进制数格式需求。 ### 示例代码 下面是 Python 中如何应用这些正则表达式的例子: ```python import re # 匹配非负整数 non_negative_integer_pattern = r'^\d+$' test_cases_non_neg_int = ["123", "0", "abc"] results_non_neg_int = [(case, bool(re.match(non_negative_integer_pattern, case))) for case in test_cases_non_neg_int] print(results_non_neg_int) # 匹配十进制数(含浮点) decimal_number_pattern = r'^-?(?:\d+(\.\d*)?|\.\d+)$' test_cases_decimal = ["123", "-123", "123.", ".123", "-.123", "abc"] results_decimal = [(case, bool(re.match(decimal_number_pattern, case))) for case in test_cases_decimal] print(results_decimal) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值