身份证出生日期位于第7至第14位,用slice(6, 14)可安全截取YYYYMMDD格式字符串;需先校验输入为长度18的字符串,避免null/undefined导致报错。

身份证号中的出生日期固定位于第7到第14位(共8个字符),采用YYYYMMDD格式。使用 String.prototype.slice() 可以直接、安全地截取这一段,无需正则或复杂判断。
明确起止索引:从第7位开始,取8位字符
slice() 使用的是**起始索引(含)和结束索引(不含)**。身份证号是长度为18的字符串,索引从0开始:
- 第1位:索引 0(如“1”)
- 第7位:索引 6(年份第一位,如“1995”的“1”)
- 第14位:索引 13(日期最后一位,如“05”的“5”)
- 因此,
slice(6, 14)正好取到索引6~13共8个字符
处理常见异常情况:长度不足或非字符串输入
slice() 对短字符串或null/undefined有容错性,但结果可能不符合预期。建议简单校验:
- 先用
typeof id === 'string' && id.length === 18初步判断 - 若不满足,可返回
null或抛出提示,避免静默错误 - 注意:
''.slice(6, 14)返回空字符串,undefined.slice()会报错,必须前置判空
实际使用示例与注意事项
代码简洁可靠:
const id = '11010119950512345X';const birthStr = id.slice(6, 14); // "19950512"
后续可进一步解析为日期对象(如 new Date(birthStr.replace(/(\d{4})(\d{2})(\d{2})/, '$1-$2-$3'))),但截取本身只需 slice(6, 14)。
不依赖正则、不修改原字符串、无副作用,是提取身份证出生日期最直接的方式。

















