我正在尝试验证我输入的字符串是否与日期格式'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/
答案 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})$/;