需要一些帮助来构建一个简单的REGEX表达式

时间:2018-04-23 17:26:21

标签: asp.net regex

我正在尝试构建一个只有数字的REGEX表达式,包括小数,最多3个数字在小数点(千分之一)和50到左边。有效的条目会喜欢这样的东西。

1
1.0
.1
1.011
.011
1202938.123
1237923782.0

到目前为止,我有^([0-9]*|\d*\.\d{1}?\d*){1,999}$ ..任何帮助表示赞赏。谢谢。

3 个答案:

答案 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}$

正如你所看到的,除了能够发挥魔力的词边界外,所有模式都是可选的。

demo