我正在为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)
这是我使用的正则表达式;
^P(?=\w*\d)(?:\d+Y|Y)?(?:\d+M|M)?(?:\d+D|D)?(?:T(?:\d+H|H)?(?:\d+M|M)?(?:\d+(?:\.\d{1,2})?S|S)?)?$
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3062 次 |
最近记录: |