【问题标题】:Pattern check returning false javascript/typescript [duplicate]模式检查返回错误的 javascript/typescript [重复]
【发布时间】:2016-07-25 21:31:29
【问题描述】:
我正在尝试验证我输入的字符串是否与日期格式“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/
【问题讨论】:
标签:
javascript
regex
typescript
【解决方案1】:
您必须转义传递给 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})$/
【解决方案2】:
你应该转义你的反斜杠。要表示\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));
【解决方案3】:
尝试使用这样的模式
patt= /^((0[1-9])|(1[0-2]))\/(\d{4})$/;