我有一个跨文化网站,允许用户以dd-MMM-yyyy格式输入值。我能够根据其在C#中的文化来确定不同的值(五月,英语=五月,德语=迈)

我遇到的问题是这几个月的javascript验证。我能够建立可接受值的列表:

英语:

^Jan$|^Feb$|^Mar$|^Apr$|^May$|^Jun$|^Jul$|^Aug$|^Sep$|^Oct$|^Nov$|^Dec$


德语:

^Jan$|^Feb$|^Mrz$|^Apr$|^Mai$|^Jun$|^Jul$|^Aug$|^Sep$|^Okt$|^Nov$|^Dez$


我只想使此正则表达式不区分大小写。但是我看到的所有引用都将我指向/ gi标志,但是我所有的示例都没有意义。我尝试了以下方法,但它不起作用:

var shouldMatch = "may";
var regexPattern = "^Jan$|^Feb$|^Mar$|^Apr$|^May$|^Jun$|^Jul$|^Aug$|^Sep$|^Oct$|^Nov$|^Dec$/gi"
if(shouldMatch.match(regexPattern) != null) {
    //this should happen
}


我究竟做错了什么? javascript的正则表达式帮助杀死了我。

最佳答案

jsFiddle Demo

但是,如何匹配“ mAR”或“ MAr”等呢?这很快成为一个有趣的场景。我认为,实现此目的的一种简单方法是仅匹配大写字母

var shouldMatch = "May";
var regexPattern = "^JAN$|^FEB$|^MAR$|^APR$|^MAY$|^JUN$|^JUL$|^AUG$|^SEP$|^OCT$|^NOV$|^DEC$";
if(shouldMatch.toUpperCase().match(regexPattern) != null) {
 alert("match");
}

10-08 12:36