Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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 月日JS reg ex_Javascript_Regex - Fatal编程技术网

Javascript 月日JS reg ex

Javascript 月日JS reg ex,javascript,regex,Javascript,Regex,我使用的是简单的indx,它使用JS正则表达式。 他们说%date%变量与regex相同 (((J(anuary|uly|une))|February|(M(arch|ay))|(A(pril|ugust))|((Sept|Nov|Dec)ember)|October)| (jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec))[.,]{0,1}[\s]{0,1}[0-9]{1,2}[.,]{0,1}[\s]{0,1}(19|20|)\

我使用的是简单的indx,它使用JS正则表达式。 他们说%date%变量与regex相同

    (((J(anuary|uly|une))|February|(M(arch|ay))|(A(pril|ugust))|((Sept|Nov|Dec)ember)|October)|
    (jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec))[.,]{0,1}[\s]{0,1}[0-9]{1,2}[.,]{0,1}[\s]{0,1}(19|20|)\d\d| 
    (0[1-9]|[12][0-9]|3[01]|[1-9])(th|rd|st|nd){0,1}[\s]{0,1}(day\s){0,1}(of\s){0,1}(((J(anuary|uly|une))|February|
    (M(arch|ay))|(A(pril|ugust))|((Sept|Nov|Dec)ember)|October)|(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec))[.,]{0,2} 
     [\s]{0,1}(19|20|)\d\d| (0[1-9]|1[012]|[1-9])[- /.](0[1-9]|[12][0-9]|3[01]|[1-9])[- /.](19|20|)\d\d|(0[1-9]|
     [12][0-9]|3[01]|[1-9])[- /.](0[1-9]|1[012]|[1-9])[- /.](19|20|)\d\d|(19|20|)\d\d[- /.](0[1-9]|1[012]|[1-9])[-  
     /.](0[1-9]|[12][0-9]|3[01]|[1-9])
但这不起作用。 我需要让它捕捉数字或数字和月份名称的日期 这是我到目前为止所拥有的,但我似乎不知道我是如何捕捉到2012年5月5日的

(?<Month>((Jan(uary)?)|(Feb(ruary)?)|(Mar(ch)?)|(Apr(il)?)|(May)|(June?)|(July?)|(Aug(ust)?)|(Sep(t(ember)?)?)|(Oct(ober)?)|(Nov(ember)?)|(Dec(ember)?)))\s*[ ,-]\s*(?<Date>(([12][0-9])
用于婚礼日期

(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d|(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])
月份名称(但不完整,应为2012年5月5日)

(?)一月(uary);(二月(ruary);(三月(ch);(四月(il);(五月)(六月?)(七月?)(八月(ust);(九月(余烬);(十月(ober);(十一月(余烬);(十二月(余烬))\s*[,-]\s*(([12][0-9])
有人能给我一些建议吗?

这里有一个(我希望更容易理解)的正则表达式,它适用于像您这样的情况:

var monthsWords = "(jan(uary)?|feb(ruary)?|mar(ch)?|apr(il)?|may|june?|july?|aug(ust)?|sep(tember)?|oct(ober)?|nov(ember)?|dec(ember)?)";
var monthsNos = "((0?[1-9])|1[0-2])";
var months = "(("+monthsWords+")|("+monthsNos+"))";
var days = "((0?[1-9])|([12][0-9])|(3[0-1]))";
var years = "\\d{4}";
var separator = "[. /-]";
var pattern = months + separator + days + separator + years;
var regexp = new RegExp(pattern, "i");
regexp.compile(regexp); 
var result=regexp.test("May 4 2012");

当然,如果您需要更大的灵活性(例如,月和日的反转顺序),您需要修改模式。此外,我假设任何四位字符串都是有效的年份,您可能也需要修改它。请注意“I”的用法标记以使模式不区分大小写。

您确定正则表达式是唯一的方法吗?上次我用JS编写日期分析器时,我使用正则表达式在月份位置提取一个单词,并使用一个以月份名称作为返回月份号的映射索引的映射。我将月份名称放在规范格式(小写)中以及全名和短名。是的。手册仅说明js正则表达式。(或变量,但这无法完成,因为它使用不同的语言)