正则表达式模式匹配日期

时间:2016-06-01 00:06:24

标签: javascript regex node.js date

我正在尝试从以下对象中提取日期(已经过字符串化。)

我是正则表达式的新手,不知道该怎么做。

I tried /^(\d{4})\-(\d{1,2})\-(\d{1,2})$/gmi  -> but it didnot work.


{"Date":"2016-05-16","Package Name":"com.myapp.mobile","Current Device Installs":"15912","Daily Device Installs":"41","Daily Device Uninstalls":"9","Daily Device Upgrades":"3","Current User Installs":"12406","Total User Installs":"23617","Daily User Installs":"27","Daily User Uninstalls":"8"}

3 个答案:

答案 0 :(得分:1)

请勿在此处使用正则表达式。

UIView,除非有充分的理由不这样做(你没有在你的问题中说明一个)

如果您想将字符串“2016-05-16”变为年,月和日的3个变量(不使用日期库),我只使用IBDesignable

JSON.parse(str).Date

答案 1 :(得分:0)

你的正则表达式匹配正常,只是不要使用/gmi标志

"2016-05-16".match(/^(\d{4})\-(\d{1,2})\-(\d{1,2})$/)

你可以让它变得更简单..

"2016-05-16".match(/(\d{4})-(\d{2})-(\d{2})/)

但是,你真的应该使用一个库,比如moment.js,或者至少Date,因为这个ISO-8601会很好。

const date = new Date("2016-05-16");
date.getYear();

答案 2 :(得分:0)

正如评论中所建议的那样,您可以通过解析JSON来获取日期(为方便起见,在下面进行了修剪):



var s = '{"Date":"2016-05-16","Package Name":"com.myapp.mobile"}';

var dateString = JSON.parse(s).Date;

document.write(dateString);




如果需要Date对象,则可以解析该字符串。请注意,由于浏览器不一致,建议不要使用 Date 构造函数或 Date.parse 来解析字符串。手动解析ISO日期非常简单,您只需要决定是将其解析为本地还是UTC。

由于ECMA-262要求仅将日期ISO格式解析为UTC,以下函数将可靠地执行此操作(并返回超出范围值的无效日期):



/* Parse an ISO 8601 format date string YYYY-MM-DD as UTC
** Note that where the host system has a negative time zone
** offset the local date will be one day earlier.
**
** @param {String} s - string to parse
** @returs {Date} date for parsed string. Returns an invalid
**                Date if any value is out of range
*/
function parseISODate(s) {
  var b = s.split(/\D/);
  var d = new Date(Date.UTC(b[0], b[1]-1, b[2]));
  return d && d.getMonth() == b[1]-1? d : new Date(NaN);
}

var d = parseISODate('2016-05-16');
document.write('UTC date: ' + d.toISOString() + '<br>' +
               'Local date: ' + d.toString());
&#13;
&#13;
&#13;