Javascript 用于日期验证的正则表达式-解释

Javascript 用于日期验证的正则表达式-解释,javascript,regex,Javascript,Regex,我在网上冲浪进行日期验证,但并不完全理解正则表达式。有人能解释一下吗?我对?,{}和$感到困惑。我们为什么需要它们 dateReg = /^[0,1]?\d{1}\/(([0-2]?\d{1})|([3][0,1]{1}))\/(([1]{1}[9]{1}[9]{1}\d{1})|([2-9]{1}\d{3}))$/; ??指零或上述任何一项 {n} 指上述的n个 $是字符串的结尾谢谢@Andy E?表示“零或一次发生”。 {x} 其中x是一个数字,表示“正好发生x次” $表示“行尾” 这些是

我在网上冲浪进行日期验证,但并不完全理解正则表达式。有人能解释一下吗?我对?,{}和$感到困惑。我们为什么需要它们

dateReg = /^[0,1]?\d{1}\/(([0-2]?\d{1})|([3][0,1]{1}))\/(([1]{1}[9]{1}[9]{1}\d{1})|([2-9]{1}\d{3}))$/;

??指零或上述任何一项

{n} 指上述的n个

$是字符串的结尾谢谢@Andy E

?表示“零或一次发生”。 {x} 其中x是一个数字,表示“正好发生x次” $表示“行尾”

这些是非常基本的正则表达式,我建议您阅读。

简单总结一下:

`“?”将匹配前面放置的图案组的0或1倍。在这种情况下,它可能被误用,应该被忽略,但这完全取决于您想要匹配什么

`{x} '告诉正则表达式与前面的模式组精确匹配x次

`$表示匹配行尾。

好:

^ // start of the text
$ // end of the text
X{n} // number n inside these curly parenthesis define how many exact occurrences of X
X{m,n} // between m to n occurrences of X
X? // 0 or 1 occurrence of X
\d // any digits 0-9

有关Javascript日期验证的更多帮助,请参阅:

在Javascript中,您可以通过将日期传递给date.Parse函数来验证日期。成功转换为日期对象意味着您有一个有效的日期

不建议为此使用正则表达式。太多的边缘案例和代码很难维护

^ = beginning of the string
[0,1]? = optional zero, one or comma (the comma is probably an error)
\d{1} = exactly one digit (the {1} is redundant)
\/ = a forward slash
[0-2]? = optional zero, one or two (range character class) followed by any single digit (\d{1})
OR [3] = three (character class redundant here) followed by exactly one zero, one or comma 
\/ = forward slash
[1]{1}[9]{1}[9]{1}\d{1} = 199 followed by any digit
OR 2-9 followed by any 3 digits

总的来说,这是一个非常糟糕的表达。我建议找一个更好的,或者使用一个真正的日期解析器。

{n}表示前面提到的n个。{0,n}将达到上述的n个。$是字符串的结尾,除非使用m开关。@Andy谢谢!就在我点击submit之后,我想起了第一个事实;没关系,我现在明白他们想匹配什么了:“?”是这里需要的。你从哪里得到的?这是我见过的最糟糕的正则表达式之一。