带长度的 RegEx 数字

标签 regex limit numeric

我如何创建带有小数点分隔符的数字正则表达式,同时限制长度

我创建了这个:

^[0-9]([0-9]*[.]?[0-9]){1,10}$

那么 1234567890.1234567890 是有效的,但是使用了 20(+1 -> 小数分隔符)个字符。

如何限制为 10 个字符?

有效:

1234567890
123456789.0
12345678.90
1234567.890
123456.7890
12345.67890
12345.67890
1234.567890
123.4567890
12.34567890
1.234567890

无效:

12345678901
12345678901.
123456789.01
12345678.901
1234567.8901
123456.78901
12345.678901
12345.678901
1234.5678901
123.45678901
12.345678901
1.2345678901
.12345678901

提前致谢

最佳答案

^(?:\d{1,10}|(?!.{12})\d+\.\d+)$

解释:

^          # Start of string
(?:        # Either match...
 \d{1,10}  # an integer (up to 10 digits)
|          # or
 (?!.{12}) # (as long as the length is not 12 characters or more)
 \d+\.\d+  # a floating point number
)          # End of alternation
$          # End of string

请注意(如您的示例所示).123123. 无效。

关于带长度的 RegEx 数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14990962/

相关文章:

SQL 一对多 JOIN 没有子查询?

javascript - 如何限制javascript高亮功能的使用次数?

sql - 在 Hive SQL 中提取两个字符之间的数字

c++ - C 与 C++ 的数值模拟(性能)

python - 如何使用 re.findall() 使用符号组名

python - 在字符串中查找特殊字符笑脸

javascript - 正则表达式 - 匹配尽可能少的出现次数

php - 多个地点具有相同的邮政编码会导致问题

python - 如何使用 matplotlib 生成逻辑方程 K = 1 的向量场图?

javascript - 如何在节点列表上使用带有 for 循环的 match() 方法