我有以下字符串:
var cur = "t+20d";
我想匹配它。我已经做过的那部分
if(cur.match(/^[t]\+[0-9]{2,4}[dmyw]/i))
现在我还需要能够匹配此字符串,并且最好在同一正则表达式中
var cur = "10may15+20d";
我试过了
cur.match(/^([t]|([0-9]{1,2}(jan|feb|march|apr|may|jun|jul|aug|sept|okt|nov|dec)))\+[0-9]{2,4}[dmyw]/i)
但是它没有按预期工作。
如果我尝试编译子部分,我会得到两个数组而不是一个
cur.match(/[0-9]{1,2}(jan|feb|march|apr|may|jun|jul|aug|sept|okt|nov|dec)/i);
//yields ["10MaY", "MaY"]
这让我担心误报。
我对regex真的很生锈,上一次我尝试制作一个复杂的regex是15年前,那是在perl中的,所以我真的可以在此方面提供一些帮助。我知道ors和分组比赛是可能的,我只是不知道该怎么做,所以需要一些帮助。
最佳答案
您需要匹配月份之后存在的数字。
^(t|[0-9]{1,2}(?:jan|feb|march|apr|may|jun|jul|aug|sept|okt|nov|dec)\d+)\+[0-9]{2,4}[dmyw]
DEMO