0

我有一个实现 IClientValidate 的自定义正则表达式属性,以便我可以将它与不引人注目的验证一起使用。

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

SyntaxError: 无效的量词
匹配 = 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})$

4

3 回答 3

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

于 2013-01-15T08:57:43.827 回答
1

与 .NET (C#) 相比,JavaScript 正则表达式风格极为有限。它不支持的众多功能之一是形式的内联修饰符(?i)regexor (?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"
于 2013-01-15T09:29:18.810 回答
0

当我在此运行您的正则表达式时:http ://regexpal.com/ 我在这部分出现错误:(?i)

Rexegpal 是一个 JavaScript 正则表达式测试器。因此,如果您可以让它在这里工作,那么您可以将它应用到您的代码中。

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

于 2013-01-15T08:56:08.123 回答