Javascript Match使用regex加入AmPm小时数

Javascript Match使用regex加入AmPm小时数,javascript,regex,string,typescript,Javascript,Regex,String,Typescript,我有下一种格式的输入字符串:12:00am | 1:20PM | 9:30Pm 我需要在输出数组中输入小时数,如:[12:00am,1:20PM,9:30Pm] 但在我把它和正则表达式匹配之前 我有一些正则表达式来匹配AmPm小时数,我试图添加来匹配完整的字符串 \b((1[0-2]| 0?[1-9]):([0-5][0-9])([AaPp][Mm])([|])?。此正则表达式匹配字符串12:00am | 1:20PM | 9:30Pm,但也匹配字符串12:00am | 1:20PM}9:30P

我有下一种格式的输入字符串:
12:00am | 1:20PM | 9:30Pm

我需要在输出数组中输入小时数,如:
[12:00am,1:20PM,9:30Pm]

但在我把它和正则表达式匹配之前

我有一些正则表达式来匹配AmPm小时数,我试图添加
来匹配完整的字符串
\b((1[0-2]| 0?[1-9]):([0-5][0-9])([AaPp][Mm])([|])?
。此正则表达式匹配字符串
12:00am | 1:20PM | 9:30Pm
,但也匹配字符串
12:00am | 1:20PM}9:30Pm
,这是不正确的

正则表达式中的错误在哪里?如何返回预期数组

感谢由于
[|]匹配此字符的1次或0次出现,所以
\b((1[0-2]| 0?[1-9]):([0-5][0-9])([AaPp][Mm])([|])?
不需要
。此正则表达式匹配
12:00am | 1:20PM}9:30Pm
,因为它找到
12:00am
,并将其称为一天(即返回有效匹配)

您需要使用
|
拆分字符串,并根据
/^(1[0-2]|0?[1-9]):([0-5][0-9])([AaPp][Mm])$/
模式验证每个项目

var s=“12:00am | 1:20PM | 9:30Pm”;
var re=/^(1[0-2]| 0?[1-9]):[0-5][0-9]([AaPp][Mm])$/;
var项目=s.split(“|”);
if(items.filter(函数(x){return re.test(x);}).length==items.length){
log(“VALID=>”,items);
}否则{
console.log(“无效!”);

}
这真是一个好消息。检查。建议使用
“|”
拆分,并检查所有项目是否匹配
^(1[0-2]|0?[1-9]):([0-5][0-9])([AaPp][Mm])$
@WiktorStribiżew,谢谢,我会查看它。所以,先拆分,然后验证。它符合你的要求吗?