ASP.正则表达式可以在.NET中工作,但不能在JS中工作

ASP.NET MVC Data Annotations Regular expression works in .NET but not in JS

本文关键字:工作 但不能 JS NET 正则表达式 ASP      更新时间:2023-09-26

我试图使用这个答案https://stackoverflow.com/a/164994/4950中给出的英国邮政代码正则表达式在一个正则表达式数据注释中用于ASP中的模型验证。净MVC。

这是正则表达式:

(GIR 0AA)|((([A-Z-[QVX]][0-9][0-9]?)|(([A-Z-[QVX]][A-Z-[IJZ]][0-9][0-9]?)|(([A-Z-[QVX]][0-9][A-HJKSTUW])|([A-Z-[QVX]][A-Z-[IJZ]][0-9][ABEHMNPRVWXY])))) [0-9][A-Z-[CIKMOV]]{2})

这工作良好的服务器端和测试时,在Regex英雄(http://regexhero.net/tester/),但在客户端正则表达式似乎不工作。

我查看了Jquery.validate.unobtrusive插件使用的代码:

$jQval.addMethod("regex", function (value, element, params) {
    var match;
    if (this.optional(element)) {
        return true;
    }
    match = new RegExp(params).exec(value);
    return (match && (match.index === 0) && (match[0].length === value.length));
});

和这里复制了相同的情况:http://jsfiddle.net/cEGsj/(我稍后添加了gi参数)。

谁能告诉我为什么这个正则表达式在JS中失败?我最初认为这与大小写有关,但添加忽略大小写选项似乎并没有改变任何东西。

也不似乎在这里工作:http://regexpal.com/所以一定有一些语法问题..

更新:我已经设法通过删除嵌套的字符集得到一些令人满意的工作。示例如下:http://jsfiddle.net/Asyqh/1/

我已经设法通过删除Javascript似乎不喜欢的嵌套字符集来获得令人满意的工作。示例如下:http://jsfiddle.net/Asyqh/1/

var regex = "(GIR 0AA)|((([A-Z][0-9][0-9]?)|(([A-Z][A-Z][0-9][0-9]?)|(([A-Z][0-9][A-HJKSTUW])|([A-Z][A-Z][0-9][ABEHMNPRVWXY])))) [0-9][A-Z]{2})";
相关文章: