正则表达式匹配0到100之间的任何数字?

时间:2012-08-31 11:09:36

标签: perl

我需要一个正则表达式来匹配0到100之间的任何数字,包括十进制数字示例: 我的表达应该匹配1,2,2.3,40,40.12,100,100.00这样..提前谢谢?

3 个答案:

答案 0 :(得分:2)

假设你必须允许一个主要标志,你最好写

if ( /(?<![-+.\d])([-+]?\d+(?:\.\d*)?(?![-+.\d])/ and $1 >= 0 and $1 <= 100 ) { .. }

但如果您强制使用正则表达式,那么您需要

if ( /(?<![-+.\d])(([-+]?(?:100|\d\d)(?:\.\d*)?(?![-+.\d])/ ) { .. }

这些模式可能比必要的更复杂,因为它们允许在字符串中出现 where 的数字。如果您只是检查整个字符串以查看它是否符合条件,那么它可能会更短

答案 1 :(得分:0)

这样可行:

(100(\.0+))|([0-9]{1,2}(\.[0-9]+)?)

匹配“100”(可选点加一个或多个零)或一个或两个数字,可选地后跟一个点和至少一个数字。

答案 2 :(得分:0)

EDITED !!!

这个问题比我最初意识到的要困难得多。经过一些努力,我制作了一个没有错误的新正则表达式。享受。

/(?<!\d)(?<!\.)(100(?:(?!\.)|(?:\.0*+|\.))(?=\D)|[0-9]?[0-9](?:\.|\.[0-9]*+)?(?=[\D]))/

此模式将以$ 1

进行捕获