Qt:正则表达式最大值9位数字(整数和浮点)

时间:2019-06-05 05:42:51

标签: regex qt

我想要一个正则表达式:  - 整数  -浮动  -最高9位数字

用于Qt5

^[\d*[.,]?\d+]{0,4}$

没有{0,4}的正则表达式可以正常工作。 这个版本运作良好,但我想最多9位数字

\d*[.,]?\d+

3 个答案:

答案 0 :(得分:2)

您可以使用

^(?!(?:\D*\d){10})\d*[.,]?\d+$

请参见regex demoregex graph

enter image description here

详细信息

  • ^-字符串开头
  • (?!(?:\D*\d){10})-如果找到10个或更多数字,则匹配失败
  • \d*-0位数以上
  • [.,]?-可选的.,
  • \d+-1个以上数字
  • $-字符串的结尾。

答案 1 :(得分:1)

这有点复杂。我也不太确定我们希望在这里设计的表达式,我猜想,我们可能想要整数或具有四位数字的浮点数,那么我们将从一个简单的表达式开始,例如:

^\d{1,5}\.\d{1,4}$|^\d{1,9}$

这里的问题是该表达式也将失败111111.1,这只是一件事,会导致复杂性。另一件事是,如果我们希望还包含逗号。

Demo

RegEx电路

jex.im可视化正则表达式:

enter image description here

答案 2 :(得分:1)

就像艾玛所说,它很复杂。

我的建议是

(^\d{1}[,.]\d{1,8}$)|(^\d{2}[,.]\d{1,7}$)|(^\d{3}[,.]\d{1,6}$)|(^\d{4}[,.]\d{1,5}$)|(^\d{5}[,.]\d{1,4}$)|(^\d{6}[,.]\d{1,3}$)|(^\d{7}[,.]\d{1,2}$)|(^\d{8}[,.]\d{1,1}$)|(^\d{1,9}$)

第一组检查所有浮点数,其中小数点前有一位数字,小数点后1至8位
第二组检查所有浮点数,它们的小数点前两位和小数点后1至7位
第三组检查所有小节,它们的小数点前三位和小数点后1至6位
等等...
最后一组检查所有1到9位数字的整数

在每组中不使用^$,当使用多行标记时,它在9位以上的数字中找到了最后9个数字

jex.im