模式检查返回false javascript / typescript

时间:2016-07-25 21:31:29

标签: javascript regex typescript

我正在尝试验证我输入的字符串是否与日期格式'MM / yyyy'

匹配

以下是我正在使用的代码示例:

var date='05/2016'
var patt= new RegExp('^((0[1-9])|(1[0-2])|[1-9])\/(\d{4})$');
patt.test(date);

但是上面的代码返回false。

我尝试使用正则表达式检查器运行它: https://regex101.com/

这种模式似乎运作良好。

有人可以让我知道缺少什么。 https://jsfiddle.net/ymj6o8La/

3 个答案:

答案 0 :(得分:3)

您必须转义传递给RegExp的字符串(反斜杠)。

var patt= new RegExp('^((0[1-9])|(1[0-2])|[1-9])\\/(\\d{4})$');

更好的是,在你的情况下,它不是动态的,所以你应该使用文字的RegExp

var patt = /^((0[1-9])|(1[0-2])|[1-9])\/(\d{4})$/

答案 1 :(得分:0)

你应该逃避你的反斜杠。要代表\d甚至是\,您应该在其后面加上另一个反斜杠(e.g: \\)



var date = '05/2016'
var patt = new RegExp('^((0[1-9])|(1[0-2])|[1-9])\\/(\\d{4})$');
console.log(patt.test(date));




答案 2 :(得分:0)

尝试使用这样的模式

patt= /^((0[1-9])|(1[0-2]))\/(\d{4})$/;