我有一个自定义正则表达式属性,它实现了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})$
答案 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正则表达式测试程序。 因此,如果您可以在此处使用它,则可以将其应用于您的代码中。
也许您有一些示例字符串可以试用?