我有以下模式,我试图用来匹配信用卡到期日期:
(0[1-9]|1[0-2])\/?(([0-9]{4})|[0-9]{2}$)
Run Code Online (Sandbox Code Playgroud)
我正在测试以下字符串:
02/13
0213
022013
02/2013
02/203
02/2
02/20322
Run Code Online (Sandbox Code Playgroud)
它应该只匹配前四个字符串,最后3个字符串不应该匹配,因为它们无效.但是,当前模式也匹配最后一个字符串.我究竟做错了什么?
anu*_*ava 25
您缺少线锚的起点^和括号是不匹配的.
这应该工作:
re = /^(0[1-9]|1[0-2])\/?([0-9]{4}|[0-9]{2})$/;
Run Code Online (Sandbox Code Playgroud)
或使用单词边界:
re = /\b(0[1-9]|1[0-2])\/?([0-9]{4}|[0-9]{2})\b/;
Run Code Online (Sandbox Code Playgroud)