Javascript 我在使用正则表达式时哪里出错了?

Javascript 我在使用正则表达式时哪里出错了?,javascript,regex,string,Javascript,Regex,String,试图知道是上午还是下午。我不确定我会错在哪里 试试这些 /[AP]M/i或/(AM | PM)/i 您当前的正则表达式只匹配一个字母[AMP] 另外,不要用引号将正则表达式括起来,您希望它是正则表达式而不是字符串。您需要的是正则表达式,而不是字符串 var s=“07:05:45PM”; var meridian=s.match(/[AP]M/i)//在s中匹配上午或下午 控制台日志(meridian)您应该使用组而不是字符集 [AM PM]匹配该集中的单个字符(a或M或p或) (AM | P

试图知道是上午还是下午。我不确定我会错在哪里

试试这些

/[AP]M/i
/(AM | PM)/i

您当前的正则表达式只匹配一个字母
[AMP]


另外,不要用引号将正则表达式括起来,您希望它是正则表达式而不是字符串。

您需要的是正则表达式,而不是字符串

var s=“07:05:45PM”;
var meridian=s.match(/[AP]M/i)//在s中匹配上午或下午

控制台日志(meridian)您应该使用组而不是字符集

[AM PM]
匹配该集中的单个字符(
a
M
p

(AM | PM)
匹配整个字符串,其中
是or。在本例中,它将匹配
AM
PM


其次,
match
的输入应该是正则表达式而不是字符串(去掉双引号)。

您的问题实际上由两个问题组成:正则表达式语法和传递给
match
的值

将文本放在正则表达式的方括号内(例如,
[AM PM]
)意味着“匹配此处声明的任何一个字符”。因此,
[AM PM]
转换为“匹配a、p、M或空格”。您通常会看到这样一个表达式被写成
[AMP]
(或这些字符的任何顺序)。要匹配您要查找的内容,请尝试以下操作:

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
[AP]M
这意味着“匹配A或p后跟M”

然后是传递给
match
的内容的问题<代码>匹配
应采用正则表达式文字,而不是字符串。基本上,删除引号

您的最终代码可能如下所示:

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
[AP]M

您正在将字符串传递给
s.match()
,而不是正则表达式。因此,
/
字符被解释为您试图匹配的内容的一部分。此外,阅读一些内容以了解
[AM PM]
的实际含义(匹配A或M或空格或P或M)。某些语言(如PHP)确实希望在字符串中指定正则表达式,但值得了解的是,哪些语言不能做到这一点。Pro-tip:我已经编辑了您的一些问题,以删除请帮助我的材料。考虑到一个标题<代码>谁可以帮助我在哪里出错,使用ReXEX <代码>可以缩短到<代码>,我使用ReGEX < /C> >出错,因此大部分都是冗余的。请注意,添加大量的“请帮帮我”华夫饼干通常被解释为乞讨,而不是礼貌。这可能是你的反对票的来源(我没有投票)