无法理解正则表达式

Sam*_*Sam 0 javascript regex

我理解基本的正则表达式,但是当我看到这样的时候

/^(28|29|[3-5][7]*[0-9])$/
Run Code Online (Sandbox Code Playgroud)

我不能破译它在某一点上的含义.我得到的一切都是分开的,但是对我来说没有意义,我也不明白asterik在这个背景下的意思.谁能解释一下?

Esa*_*ija 7

/^(28|29|[3-5][7]*[0-9])$/
Run Code Online (Sandbox Code Playgroud)

首先分开管道,使其匹配:

/^28$/,/^29$//^[3-5][7]*[0-9]$/

前两个是非常明显的,无论是28还是29,其他任何东西都不匹配,所以在第三个:

^[3-5]
Run Code Online (Sandbox Code Playgroud)

从3号,4号或5号开始

[7]*然后是0-无限量的七人制,直到[0-9]$这意味着以0到9之间的数字结尾.