regex - 带十进制数和普通数的计算器正则表达式
问题描述
我目前有一个带有正则表达式的验证功能,如下所示:
validateFormula(String value) {
String pattern = (r'^\d+\.\d{1,2}$');
RegExp regExp = new RegExp(pattern);
if (value.length == 0) {
return "Number cannot be empty";
} else if (!regExp.hasMatch(value)) {
return "Number not valid, always use decimal formaters. Ex: 1.0";
}
return null;
}
上面的代码运行在一个简单的计算器应用程序中进行计算,但仅适用于十进制形式的输入数字和十进制。示例4.0 + 4.2
等。如下图所示:
但是,当我输入一个数字而不是十进制数字时,它不想被计算在内,因为我创建的正则表达式仅适用于十进制数字。
如果我想计算如下:
1.6 + 1
1.66 + 1.66
1.667 - 1.111
1 * 1
1.56 / 1.56
小数点后最多 3 位
解决方案
在这种情况下,您可以使用此正则表达式:
^[+-]?\d+((\.\d{,3})|\d*)$
允许正负整数或小数点后最多三位数字。
推荐阅读
- html - HTML 背景图像:输入中的 ulr()
- c# - 避免在 app.config (.net 框架) 中使用dependentAssembly
- c# - C# FileSystemWatcher - 多个事件
- php - 摆脱不良字符,但保留所有语言的所有字符
- r - 按疾病分层的每列的 P 值
- javascript - jQuery UI Datepicker - 返回日期、到达和离开
- python - 当使用带有 session.post() 的代理时出现错误 getaddrinfo failed
- python - 通过python将数据从字典写入csv
- python - 如何检查网站的服务器功能?
- r - 使用 actionButton() 在闪亮仪表板的模态对话框中播放视频