十进制正则表达式约束匹配(可选小数点前后四位数,后两位数)

时间:2015-07-05 19:59:43

标签: regex

每次输入数字/小数点时,我需要弄清楚如何使正则表达式正确匹配。我想限制小数点前后的位数,这不是太难,但我不知道如何让小数点也匹配。

1 - match
12 - match
1234 - match
12345 - wrong
1234. - match
1234.1 - match
1234.12 - match
1234.123 - wrong

Other matched numbers
12.12
1.0
123.99

编辑:

所以我希望小数点前最多4个数字,之后需要2个数字。小数位也是可选的。

棘手的部分是,如果第五个字符不是小数点,我希望它失败。

3 个答案:

答案 0 :(得分:1)

您需要更好地指定约束;我假设您希望在点之前最多4个,在之后最多2个:

/^\d{1,4}(\.\d{0,2})?$/

编辑:我添加了字符串匹配器的开头和结尾。应该按你想要的那样工作

答案 1 :(得分:0)

这样的事情会有所帮助

r'^\d{1,4}(\.\d{0,2})?$'

你必须知道,\ d代表一个数字,。小数点和{min_required,max_required}。请务必在使用正则表达式之前测试它们here.

答案 2 :(得分:0)

您可以使用以下正则表达式仅选择由数字组成且满足您条件的单词。

/(?<=^|\s)\d{1,4}(?:\.\d{0,2})?(?=\s|$)/g

使用正向前瞻和后瞻来确保数字周围有空格。

DEMO

Regular expression visualization

Debuggex Demo