Perl 中 GPA 的正则表达式

标签 regex perl

我是 Perl 和正则表达式世界的新手,我正在尝试编写一个与 0.0 和 4.0 之间的 GPA 匹配的正则表达式。所有匹配值只能是由句点分隔的 2 位数字( 1.23.40.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/

相关文章:

mysql - 仅在行首查找和替换

ruby - 在 Ruby 中使用正则表达式提取两个标签之间的文本

java - 用单斜线 '/./' 替换斜线之间的点,即 '/'

javascript - 需要一个正则表达式来查找不被加号包围的字符

linux - 如何更改当前光标位置指示器的颜色?

regex - 转义正则表达式中的正斜杠

java - 转换为和从印度教日历

perl - 我怎么知道 perl 脚本是如何启动的?

javascript - Javascript 的正则表达式获取子字符串

java - 如何在 Android 中使用自定义正则表达式验证 EditText 输入?