如何使用javascript从字符串中提取日期?它可以采用以下格式:
2014年7月31日
2014年7月31日
2014年7月31日 相同的格式但除以空格或/或 - 2014年7月31日 31/07/2014 31-07-2014
该字符串可能包含其他字符,如
Teen.Wolf.S04E06.Orphaned.28.07.2014.HDTV
所以如何从这些类型的名称中提取日期。
我想首先提取所有数字,然后比较它是否大于12以确保它是月份或日期。 我对regEx(正则表达式)了解不多,所以如果使用的话请解释一下谢谢
答案 0 :(得分:5)
可能使用像
这样的正则表达式/(\d{4}([.\-/ ])\d{2}\2\d{2}|\d{2}([.\-/ ])\d{2}\3\d{4})/
\d - a digit (equivilant to character class [0-9]
{n} - match n characters
[.\-/ ] - character class matches a single . - / or space (- needs to be escaped because it indicates a range in a character class
\n - a backreference matches the nth match so / will match another / and not a -, /, space or .
你可以拉出正则表达式的第一部分并检查它,它与第二部分相同,除了4位和2位数已被交换
/\d{4}([.\-/ ])\d{2}\1\d{2}/
答案 1 :(得分:4)
也许这可以帮助你(Demo Fiddle here):
function getDate(d)
{
var day, month, year;
result = d.match("[0-9]{2}([\-/ \.])[0-9]{2}[\-/ \.][0-9]{4}");
if(null != result) {
dateSplitted = result[0].split(result[1]);
day = dateSplitted[0];
month = dateSplitted[1];
year = dateSplitted[2];
}
result = d.match("[0-9]{4}([\-/ \.])[0-9]{2}[\-/ \.][0-9]{2}");
if(null != result) {
dateSplitted = result[0].split(result[1]);
day = dateSplitted[2];
month = dateSplitted[1];
year = dateSplitted[0];
}
if(month>12) {
aux = day;
day = month;
month = aux;
}
return year+"/"+month+"/"+day;
}
答案 2 :(得分:1)
RegEX将帮助您提取具有不同类型格式的日期,并以数组形式返回
let str="dd/mm/yyyy06/06/2018 yyyy/mm/dd 2018/02/12 d/m/yy 1/1/18 dd/mm/yy 18/12/12 mm/d/yyyy 12/2/2018 m/dd/yyyy 1/12/2018 yy/m/d 18/1/1 yy/mm/d 18/12/1 yyyy/2018/1/1";
str.match(/(\d{1,4}([.\-/])\d{1,2}([.\-/])\d{1,4})/g);
答案 3 :(得分:0)
我认为你可以使用正则表达式。您需要的主要三个表达式如下:
[0-9]{4} // year
(0[1-9]|1[0-2]) // month
(0[1-9]|[1-2][0-9]|3[0-1]) // day
您可以将这些组合起来以适合您提到的格式,例如,匹配“31.07.2014”:
(0[1-9]|[1-2][0-9]|3[0-1])\.(0[1-9]|1[0-2])\.[0-9]{4}
或“31/07/2014”:
(0[1-9]|[1-2][0-9]|3[0-1])\/(0[1-9]|1[0-2])\/[0-9]{4}
您可以决定所需的格式,并创建一个使用OR运算符分隔格式的正则表达式。
答案 4 :(得分:0)
function myFunction() {
var str = "Teen.Wolf.Orphaned.28.07.2014.HDTV";
var res = str.split(".");
var text = "";
var x;
for (x in res) {
if (!isNaN(res[x])) {
text += res[x];
if (text.length == 2) { text += ','}
else if (text.length == 5) { text += ',' }
}
}
document.write(text);
}
这将写成“28,07,2014”
注意:如果字符串的格式与您在上面发布的格式类似,则只能使用此方式。