2

我已经搜索并没有看到这个答案,所以我希望这不是一个重复/重复的问题。

我正在从字符串中提取日期,但飞蛾和天数可能是 1 位数或 2 位数。也就是说,它可以是: - “1/1/2018” - “12/1/2018” - “1/12/2018” - “12/12/2018”

我已经看到了如何在数字是恒定的预期大小或用零填充的地方进行正则表达式

(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.](19|20)\d\d

但是我如何将第一个数字设为可选。如果第一个数字在那里,如何抓住它们。

4

4 回答 4

2

To stay with your idea

(0[1-9]|1[012]|[1-9])[- \/.](0[1-9]|[12][0-9]|3[01]|[1-9])[- \/.](19|20)\d\d

Or you could just make the leading zero for days and month optional

(0?[1-9]|1[012])[- \/.](0?[1-9]|[12][0-9]|3[01])[- \/.](19|20)\d\d

Where the question mark is defined as "Matches between zero and one times, as many times as possible, giving back as needed", see https://www.regular-expressions.info/optional.html

于 2018-08-30T17:08:35.227 回答
1

您可以使用+量词来匹配一个或多个前面的项目。在您的情况下,[0-9]+(or \d+) 将匹配 1 或 12 或 2018。

于 2018-08-30T17:11:55.720 回答
0

试试这个正则表达式。

\d+/\d+/-\d{4}
于 2019-12-26T17:03:21.077 回答
-1

这是提取日期的简单方法

function extractDate(dateString){
  var tempArray = dateString.split("/");
  var dateVal = tempArray[0];
  var monthVal = tempArray[1];
  var yearVal = tempArray[2];

  console.log(dateVal);
  console.log(monthVal);
  console.log(yearVal);

}

//Demo 1
extractDate("1/1/2018");

//Demo 2
extractDate("1/12/2018");


//Demo 3
extractDate("12/12/2018");

用于测试的 Plunker Link

于 2018-08-30T17:12:29.723 回答