我想要一个正则表达式: - 整数 -浮动 -最高9位数字
用于Qt5
^[\d*[.,]?\d+]{0,4}$
没有{0,4}的正则表达式可以正常工作。 这个版本运作良好,但我想最多9位数字
\d*[.,]?\d+
答案 0 :(得分:2)
您可以使用
^(?!(?:\D*\d){10})\d*[.,]?\d+$
详细信息
^
-字符串开头(?!(?:\D*\d){10})
-如果找到10个或更多数字,则匹配失败\d*
-0位数以上[.,]?
-可选的.
或,
\d+
-1个以上数字$
-字符串的结尾。答案 1 :(得分:1)
这有点复杂。我也不太确定我们希望在这里设计的表达式,我猜想,我们可能想要整数或具有四位数字的浮点数,那么我们将从一个简单的表达式开始,例如:
^\d{1,5}\.\d{1,4}$|^\d{1,9}$
这里的问题是该表达式也将失败111111.1
,这只是一件事,会导致复杂性。另一件事是,如果我们希望还包含逗号。
jex.im可视化正则表达式:
答案 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个数字