[英]Extract month, day and year from date regex
我有“mm / dd / yyyy”格式的日期。 但是,根据什么日期或月份,不能保证“mm / dd”部分必须有两位数。 所以日期可能是:
11/12/2014
要么
6/12/2014
要么
11/5/2014
在上述所有情况中,我需要能够提取mm
, dd
和yyyy
每个值,以便我可以做这样的计算:
Month = regex that returns month part.
Day = regex that returns day part
Year = regex that returns 4 digits year part.
这个\\d{2}/\\d{2}/\\d{2}
匹配整个事情。
匹配所有日期的正确正则表达式为: \\d{1,2}/\\d{1,2}/\\d{4}
。 符号{n,m}
称为限制重复 ,在这种情况下\\d{n,m}
表示“在n和m位数之间(包括)”。 您可以在此处详细了解: 限制重复 。
如果要创建匹配组,请使用“(”和“)”(括号)。 Addiitonally,在JavaScript中,你必须转义/
使用\\
,因此你的正则表达式是: /(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})/
您可以使用regexp的exec
函数来匹配字符串。 它返回一个数组,其中包含匹配的文本作为第一个元素,然后返回每个匹配组的一个项目。
您可以在MDN RegExp.prototype.exec上找到更多信息,或者参见下面的示例:
const datePattern = /(\d{1,2})\/(\d{1,2})\/(\d{4})/;
const date = datePattern.exec("11/12/2014"); // ["11/12/2014", "11", "12", "2014"]
注意:如果传递的字符串无效(与正则表达式不匹配), exec
函数将返回null
。 这是对用户输入或数据进行简要验证的简单方法。
或者,您可以简单地拆分字符串:
"11/12/2014".split('/'); // ["11", "12", "2014"]
但无论字符串实际包含什么,它都可以工作(它可能包含字符串"ba/tm/an"
而split仍然会返回一个包含三个元素的数组)。 因此,如果要验证日期,Regexp可能更适合。
尝试这个:
var str = "11/6/2014";
var match = str.match(/(\d{1,2})\/(\d{1,2})\/(\d{4})/);
console.log(match[1]); // => "11"
console.log(match[2]); // => "6"
console.log(match[3]); // => "2014"
或者你可以创建一个日期对象:
var date = new Date("11/6/2014");
var year = date.getFullYear();
var month = date.getMonth()+1;
var day = date.getDate();
console.log(year); // => 2014
console.log(month); // => 11
console.log(day); // => 6
你不需要正则表达式来提取碎片,只需使用split
。 我使用正则表达式来允许向前或向后斜杠。
var date = "1/10/2014"
, dateParts = date.split(/\\|\//)
, month = dateParts[0]
, day = dateParts[1]
, year = dateParts[2];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.