您可以使用正则表达式将字符串解析为其组件:
var myregexp = /^(\d{1,2}?)\D?(\d{2})?\b\s*([ap]m)?$/;
var match = myregexp.exec(subject);
if (match != null) {
    hours = match[1];
    minutes = match[2];
    ampm = match[3];
} 
解释:
^         # Start of string
(         # Capture into group 1:
 \d{1,2}? # one or two digits, preferably one
)         # End of group 1
\D?       # Match an optional non-digit
(         # Capture into group 2:
 \d{2}    # Exactly two digits
)?        # End of (optional) group 2
\b        # End of number
\s*       # Optional whitespace
(         # Capture into group 3:
 [ap]m    # am or pm
)?        # End of (optional) group 3
$         # End of string
然后,您可以使用结果来构造一个新的规范化字符串,在这种情况下,这意味着
- 如果小时部分是个位数,则添加零
 
- 如果
00分钟部分是undefined 
- 决定如果
am/pm部分是undefined. 
正则表达式无法完成这部分练习,因为正则表达式只能匹配原始字符串中存在的文本,而不能动态添加。