为什么正则表达式总是返回false?

时间:2017-05-10 21:43:32

标签: javascript regex

我创建了以下模式:((\s|[0-9])[0-9]{1}:[0-9]{2}\sPM:)

此正则表达式将用于查找以下模式: 给出以下文字" Christina Perry晚上8:30:" 它应与8:30 PM:18:30 PM:匹配。

它在这里正常工作https://regex101.com/r/DouyiU/2 但是,它在我的JavaScript代码中总是返回false:

var patt = new RegExp("((\s|[0-9])[0-9]{1}:[0-9]{2}\sPM:)");
return (patt.test("Christina Perry 8:30 PM:"));

所需的结果是返回 true ,或者:是的,给定句子上有这种模式;

我做错了什么?

1 个答案:

答案 0 :(得分:3)

试试这个(使用正则表达式文字):

var patt = /((\s|[0-9])[0-9]{1}:[0-9]{2}\sPM:)/;
return (patt.test("Christina Perry 8:30 PM:"));

我建议您始终使用正则表达式文字,除非确实需要正则表达式对象(即new RegExp())。原因是在大多数情况下,正则表达式文字更容易使用,更易读。例如,在您的情况下,您不必担心转义反斜杠。

需要正则表达式对象的示例:当正则表达式模式由变量构造或构造为多个步骤时。