我正在尝试构建一个只有数字的REGEX表达式,包括小数,最多3个数字在小数点(千分之一)和50到左边。有效的条目会喜欢这样的东西。
1
1.0
.1
1.011
.011
1202938.123
1237923782.0
到目前为止,我有^([0-9]*|\d*\.\d{1}?\d*){1,999}$
..任何帮助表示赞赏。谢谢。
答案 0 :(得分:1)
我相信这应该足够了:
^(?=.)\d{0,50}(?:\.\d{0,3})?$
请参阅regex demo。请注意,这也会匹配1.
,如果这是不期望的更改\d{0,3}
到\d{1,3}
。同样,这个正则表达式将匹配.5
(没有整数部分),如果你不想这样,那么使用\d{1,50}
而不是\d{0,50}
。
答案 1 :(得分:1)
你可以尝试:
^(?=.+)\d{0,50}(?:\.\d{1,3})?$
<强> Demonstration here at regex101.com 强>
^
告诉正则表达式匹配将从字符串的开头开始,
\d{0, 50}
匹配0 - 50位数,
(?=.+)
是一个积极的预测,它告诉正则表达式只有在行中包含一些字符时才会开始匹配(正如评论中正确指出的那样!),
(?:\.\d{1,3})?
匹配可选点(.
),后跟1 - 3位数字,
$
告诉正则表达式,到目前为止匹配的内容将跟随字符串的结尾。
答案 2 :(得分:0)
其他方式:您可以检查字符串是否为空,如果点后面总是数字,则将字边界放在一个战略位置:
^\d{0,50}\.?\b\d{0,3}$
正如你所看到的,除了能够发挥魔力的词边界外,所有模式都是可选的。