我是 Perl 和正则表达式世界的新手,我正在尝试编写一个与 0.0 和 4.0 之间的 GPA 匹配的正则表达式。所有匹配值只能是由句点分隔的 2 位数字( 1.2
、 3.4
、 0.2
等)。
^[0]|[0-3]\.(\d?\d?)|[4].[0]$
这是我所拥有的,但它不正确,因为它匹配“1.22”、“4a0”、“14.0”和“2.”。如果有人有任何建议,他们将不胜感激。
最佳答案
这里的几个答案似乎不必要地复杂。相反,这个简单的正则表达式应该这样做:[0-3]\.\d|4\.0
,假设单位数形式(例如“1”)不是有效输入。 (我们不使用我来自哪里的 GPA,所以我不知道这是否是一个安全的假设。)
前后都有 anchor ,正如我在这里看到的其他人使用:
^([0-3]\.\d|4\.0)$
或者,如果您不需要捕获组:
^(?:[0-3]\.\d|4\.0)$
完整说明:正则表达式匹配 0、1、2 或 3 后跟一个句点和任何单个数字,或文字字符串 4.0。
关于Perl 中 GPA 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16228032/