C#Regex在Javascript,MVC4,Custom RegularExpressionAttribute,IClientValidatable中不起作用

时间:2013-01-15 08:43:04

标签: c# regex asp.net-mvc-4 unobtrusive-javascript unobtrusive-validation

我有一个自定义正则表达式属性,它实现了IClientValidate,以便我可以使用它进行不显眼的验证。

当我运行它时,我在FireBug中收到以下错误

  

SyntaxError:无效的量词   match = new RegExp(params).exec(value);

它显然不喜欢传递给它的正则表达式,它在C#中有效。我似乎无法弄清楚我需要做些什么才能让它在JavaScript中有效。

正则表达式是

^(?i)([A-PR-UWYZ0-9][A-HK-Y0-9][AEHMNPRTVXY0-9]?[ABEHMNPRVWXY0-9]?\s?[0-9][ABD-HJLN-UW-Z]{2})$

3 个答案:

答案 0 :(得分:1)

(?i)替换为i修饰符:
var patt=/^([A-PR-UWYZ0-9][A-HK-Y0-9][AEHMNPRTVXY0-9]?[ABEHMNPRVWXY0-9]?\s?[0-9][ABD-HJLN-UW-Z]{2})$/i

答案 1 :(得分:1)

与.NET(C#)相比,JavaScript正则表达式的风格非常有限。它不支持的众多功能之一是(?i)regex(?i:regex)形式的内联修饰符。但是,因为您正在使用new RegExp(params)构造函数,所以您应该能够将修饰符作为第二个参数传递:

"^[A-PR-UWYZ0-9][A-HK-Y0-9][AEHMNPRTVXY0-9]?[ABEHMNPRVWXY0-9]?\s?[0-9][ABD-HJLN-UW-Z]{2}$",
"i"

答案 2 :(得分:0)

当我运行你的正则表达式时:http://regexpal.com/ 我在这方面遇到错误:(?i)

Rexegpal是一个JavaScript正则表达式测试程序。 因此,如果您可以在此处使用它,则可以将其应用于您的代码中。

也许您有一些示例字符串可以试用?