var s = "07:05:45PM";
var meridian = s.match("/[AM PM]/i"); //matches AM or PM in s
console.log(meridian);
// Expecting output as [PM] but actual output is null
尝试判断它是AM还是PM。我不确定我哪里出错了。
答案 0 :(得分:1)
尝试其中一个
/[AP]M/i
或/(AM|PM)/i
您当前的正则表达式只与一个字母[AMP ]
匹配。
另外,不要用引号包装你的正则表达式,你希望它是一个正则表达式而不是字符串。
答案 1 :(得分:1)
你需要一个正则表达式,而不是一个字符串。
var s = "07:05:45PM";
var meridian = s.match(/[AP]M/i); //matches AM or PM in s
console.log(meridian);

答案 2 :(得分:1)
你应该使用的是组而不是字符集。
[AM PM]
匹配该集合中的单个字符(A
或M
或P
或)。
(AM|PM)
匹配|
所在的整个字符串。在示例中,它将匹配AM
或 PM
。
其次,match
的输入应该是正则表达式而不是字符串(删除双引号)。
答案 3 :(得分:1)
您的问题实际上由两个问题组成:正则表达式语法和传递给match
的值。
将正方括号内的文本放在正则表达式中(例如[AM PM]
)意味着“匹配此处声明的任何一个字符”。因此,[AM PM]
转换为“匹配A,P,M或空格”。您通常会看到这样的表达式写为[AMP ]
(或这些字符的任何顺序)。要匹配您要查找的内容,请尝试以下方法:
[AP]M
表示“匹配A或P后跟M”。
然后就是你传递给match
的问题。 match
应该采用正则表达式文字,而不是字符串。基本上,删除引号。
您的最终代码可能如下所示:
var s = "07:05:45PM";
var meridian = s.match(/[AP]M/i); //matches AM or PM in s
console.log(meridian);