所有正偶数的正则表达式

3
我目前正在学习翻译应用,我们正在学习正则表达式。这是一个作业问题。我已经花了一段时间在这个问题上,但我仍然感到困惑。我不只需要答案,更需要解释以确保我能够学会它。
我需要一个匹配所有偶数的正则表达式,前导0也可以。以下是一些示例... (示例:0、00、... 2、4、6、8、10、010、12...)
谢谢。

可能是重复的问题:正则表达式检查数字是否为偶数 - Colin Hebert
1
+22.005e3怎么样?它们都是正偶数。正则表达式应该接受它们吗? - Mark Byers
+1 因为诚实地承认这是一份作业。 - Mark Byers
非常感谢您的回答...它帮了我很大的忙。特别感谢您的解释。我理解了,这正是我想要的。 - Johnrad
2个回答

8

一个数字是偶数,必须以偶数结尾。偶数包括0、2、4、6和8。使用字符类来指定每个位置允许出现哪些数字。

答案是:

/^[0-9]*[02468]$/

解释:

^       行首/字符串的开头
[0-9]   从零到九的任意数字。
*       重复上一个标记零次或多次。
[02468] 任何偶数数字。
$       行尾/字符串的结尾。

为了帮助您学习正则表达式,我建议阅读正则表达式快速入门

在一些正则表达式引擎中,您可能会看到使用\d代替[0-9]。在某些正则表达式引擎中,这两者是等效的,但在其他一些引擎中,\d也匹配其他国家被认为是数字的字符。

更多信息

作为练习,您可以尝试调整此正则表达式以禁止前导零。提示:有三种类型的数字:第一个数字、中间数字、最后一个数字。请记住,只有最后一个数字必须存在,其他数字是可选的。


2
@James Curran: /^\+?[0-9]*[02468]$/ 詹姆斯·库兰:/^\+?[0-9]*[02468]$/ - gnarf

4
/\d*[02468]$/         

基本上,您想匹配所有数字直到最后一个数字,这就是 \d* 的作用。(\d* 表示匹配零个或多个数字) 然后最后一个数字必须是 0、2、4、6 或 8 中的一个。这可以通过 [02468] 实现,并将其锚定到行的末尾。当您在字符周围放置方括号时,它表示您只想匹配该字符列表。另一个例子是如果您有一个正则表达式 /[abc]/,如果字符串中包含 'a'、'b' 或 'c',则会匹配该字符串。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接