-4

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

4

3 回答 3

2

假设你必须允许一个领先的标志,你最好写

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

但是如果你被迫使用正则表达式,那么你需要

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

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

于 2012-08-31T11:21:03.870 回答
0

This would work:

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

match either "100" (with optional dot plus one or more zeroes) or one or two digits, optionally followed by a dot and at least one digit.

于 2012-08-31T11:14:23.003 回答
0

已编辑!!!

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

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

此模式将在 $1 中捕获

于 2012-09-03T13:11:45.390 回答