我正在为 LMS 构建一个 SCORM 2004 javascript API,SCORM 2004 要求之一是传递给它的时间间隔必须遵循以下格式。有谁知道这个的正则表达式是什么?我试图将我的思想包裹在它周围,但无济于事。注意:P 必须始终是第一个字符。
P[yY][mM][dD][T[hH][nM][s[.s]S]] 其中:
- y:年数(整数,>=0,不限)
- m:月数(整数,>=0,无限制)
- d:天数(整数,>=0,不限)
- h:小时数(整数,>=0,无限制)
- n:分钟数(整数,>=0,无限制)
- s:秒数或秒数(实数或整数,>=0,不受限制)。如果使用秒的小数部分,SCORM 进一步将字符串限制为最多 2 位数字(例如,34.45 - 有效,34.45454545 - 无效)。
- 如果存在相应的非零值,则应出现字符文字指示符 P、Y、M、D、T、H、M 和 S。
- 应支持值的零填充。零填充不会更改由一组字符表示的数字的整数值。例如,PT05H 等价于 PT5H 和 PT000005H。
例子 -
- P1Y3M2DT3H表示1年3个月2天3小时的时间段
- PT3H5M表示时间段为3小时5分钟
任何帮助将不胜感激。
谢谢!
更新:
我添加了一些必须保留的附加标准 -
- 代号 P 应在场
- 如果年、月、日、小时、分钟或秒的值为零,则可以省略该值和相应的字符字面指定,但除指定符 P 外,至少应存在一个字符字面指示符和值
- 如果不使用所有时间分量(小时、分钟和秒),则应省略指示符 T。零值可以与任何时间分量(例如,PT0S)一起使用