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,谢谢,我会查看它。所以,先拆分,然后验证。它符合你的要求吗?