Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式匹配第一个数字,只允许11_Javascript_Regex - Fatal编程技术网

Javascript 正则表达式匹配第一个数字,只允许11

Javascript 正则表达式匹配第一个数字,只允许11,javascript,regex,Javascript,Regex,我正在尝试创建一个正则表达式,它验证11个数字中的前6个是这个日期格式“yymmdd”,并且验证它只包含11个数字 示例:0612345 ^((0[1-9]|[1-2][0-9]|31(?!(?:0[2469]|11))|30(?!02))(0[1-9]|1[0-2])(0?[0-9]|[1-9][0-9])) 这: ^((0[1-9])|([1-9]{2}))((0[1-9]| 1[0-2]))(0[1-9]|[1-2][0-9]|( 与您要查找的内容非常接近。格式应该可以,但它也接受一些无

我正在尝试创建一个正则表达式,它验证11个数字中的前6个是这个日期格式“yymmdd”,并且验证它只包含11个数字

示例:0612345

^((0[1-9]|[1-2][0-9]|31(?!(?:0[2469]|11))|30(?!02))(0[1-9]|1[0-2])(0?[0-9]|[1-9][0-9]))
这:

^((0[1-9])|([1-9]{2}))((0[1-9]| 1[0-2]))(0[1-9]|[1-2][0-9]|(

与您要查找的内容非常接近。格式应该可以,但它也接受一些无效日期,如
192901

这也是您希望避免在此类任务中使用正则表达式的原因。如果您在任何远程复杂的任务中使用它。假设您的正则表达式支持递归,您可以使用一些来检查闰年,但我真的真的会建议您不要使用它,除非有特定的原因或它有娱乐目的se(例如某种编程挑战)

这:

^((0[1-9])|([1-9]{2}))((0[1-9]| 1[0-2]))(0[1-9]|[1-2][0-9]|(

与您要查找的内容非常接近。格式应该可以,但它也接受一些无效日期,如
192901


这也是您希望避免在此类任务中使用正则表达式的原因。如果您在任何远程复杂的任务中使用它。假设您的正则表达式支持递归,您可以使用一些来检查闰年,但我真的真的会建议您不要使用它,除非有特定的原因或它有娱乐目的se(例如,某种编程挑战)

如注释中所述,使用正则表达式进行验证实际上不起作用。使用类似正则表达式的
const match=“06060612345”。match(/^(\d{2})(\d{2})(\d{2})(\d{2})(\d{5}$/)
。然后使用
Date parse

//为参数生成yyyy/mm/dd日期字符串。
常量日期=[20+匹配[1],匹配[2],匹配[3]];
//为了检查有效性,你可以用这个代替
//正如评论中所建议的那样。
const isValid=!isNaN(Date.parse(Date));

如果需要,额外的数字在
match[4]
中,正如使用正则表达式进行验证的注释中所述,这实际上是行不通的。使用类似于
const match=“0606060612345”的正则表达式,让您自己更容易些。match(/^(\d{2})(\d{2})(\d{2})(\d{2})(\d{5}$/)
。然后使用
Date parse

//为参数生成yyyy/mm/dd日期字符串。
常量日期=[20+匹配[1],匹配[2],匹配[3]];
//为了检查有效性,你可以用这个代替
//正如评论中所建议的那样。
const isValid=!isNaN(Date.parse(Date));

如果需要,额外的数字在
match[4]

中记住,正则表达式只会验证格式,而不会验证是否为有效日期。200231不是有效日期,但格式正确。如果要实际验证日期(同时验证格式)考虑使用广泛使用的MomentJS。只有当它有11位数字时,它才能通过ReGEX模式匹配。正如已经指出的,“正确格式”可能导致无效日期。我建议只检查11位数字,并单独检查第一个6是否有有效日期。首先验证输入是否是所有数字“<代码> ^ [0~9] ]。{1} $
然后使用
.substring()
将前6个输入
时刻()
如下
时刻(输入.substring(0,6),'YYMMDD')
并检查其是否成功。请参阅记住,正则表达式仅验证格式,而不是验证是否为有效日期。200231不是有效日期,但格式正确。如果您希望实际验证日期(同时验证格式)考虑使用广泛使用的MomentJS。只有当它有11位数字时,它才能通过ReGEX模式匹配。正如已经指出的,“正确格式”可能导致无效日期。我建议只检查11位数字,并单独检查第一个6是否有有效日期。首先验证输入是否是所有数字“<代码> ^ [0~9] ]。{1} $
然后使用
.substring()
将前6个输入
时刻()
如下
时刻(input.substring(0,6),'YYMMDD')
并检查是否成功。谢谢!我不希望看到那种解决方案,我会尝试。谢谢!我不希望看到那种解决方案,我会尝试。