You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript新手求助:如何提取字符串中的数字并存入单个变量?

提取日期字符串中的数字并存入变量(JavaScript)

嘿,作为JavaScript新手碰到这种字符串处理问题完全不用慌!我来给你分享两种实用的方法,帮你轻松搞定提取数字并存入变量的需求~

方法一:用正则表达式直接提取所有数字

这是最直接的方式,不管数字对应的是日期的哪个部分,一键提取所有数字内容:

// 你的目标日期字符串
const dateStr = "Mon, 05 Feb 2018 21:00:39 +0000";

// 使用正则匹配所有连续数字,返回字符串数组
const extractedNumbers = dateStr.match(/\d+/g);

console.log(extractedNumbers); 
// 输出: ["05", "2018", "21", "00", "39", "0000"]

额外处理选项:

  • 如果需要把字符串数组转成数字类型数组:
    const numberArray = extractedNumbers.map(num => parseInt(num, 10));
    console.log(numberArray); 
    // 输出: [5, 2018, 21, 0, 39, 0]
    
  • 如果要把所有数字拼接成一个完整字符串存入变量:
    const combinedNumberStr = extractedNumbers.join('');
    console.log(combinedNumberStr); 
    // 输出: "0520182100390000"
    

方法二:用Date对象解析(更精准对应日期各部分)

因为你的字符串是标准的RFC 2822日期格式,我们可以直接用JavaScript的Date对象解析,然后提取对应日期部分的数字,这样能明确区分年、月、日等含义:

const dateStr = "Mon, 05 Feb 2018 21:00:39 +0000";
const dateObj = new Date(dateStr);

// 将各部分数字存入一个对象变量(结构清晰,方便后续使用)
const dateParts = {
  day: dateObj.getDate(),
  month: dateObj.getMonth() + 1, // 注意:JS里月份是0-11,所以要+1转换为1-12
  year: dateObj.getFullYear(),
  hours: dateObj.getHours(),
  minutes: dateObj.getMinutes(),
  seconds: dateObj.getSeconds(),
  timezone: parseInt(dateStr.match(/[+-]\d+/g)[0], 10) // 提取时区数字
};

console.log(dateParts);
// 输出: { day: 5, month: 2, year: 2018, hours: 21, minutes: 0, seconds: 39, timezone: 0 }

小提示:

  • 正则/\d+/g里的\d表示匹配单个数字,+表示匹配连续的一个或多个数字,g表示全局匹配整个字符串。
  • 使用Date对象时,记得月份是从0开始计数的,所以要加1才能得到我们日常认知的1-12月。

内容的提问来源于stack exchange,提问作者Esinko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:17:21