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

时间:2018-01-23 21:44:12

标签: javascript regex string

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。我不确定我哪里出错了。

4 个答案:

答案 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]匹配该集合中的单个字符(AMP)。

(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);