繁体   English   中英

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

[英]Regular Expression for date validation - Explain

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

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}))$/;

? 表示“零或一个事件”。
{x} (其中x是数字)表示“恰好出现了x次”
$表示“行尾”

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

在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个”

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

简要总结一下:

'?' 将匹配您放置在其前面的图案组的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日期验证的更多帮助,请参见: 仅捕获日期的正则表达式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM