在ASP.NET RegularExpressionValidator中使正则expression式不区分大小写

给出这个正则expression式: "^[0-9]*\s*(lbs|kg|kgs)$"如何使其不区分大小写? 我想在.net正则expression式validation器中使用它,所以我需要在模式中指定不区分大小写。

我不能以编程方式使用RegexOptions,因为我在RegularExpressionValidator中指定正则expression式

我发现。

区分大小写: ^[0-9]\s(lbs|kg|kgs)$

不区分大小写:( (?i:^[0-9]\s(lbs|kg|kgs)$)

我相信这是特定于正则expression式的.NET实现。 所以,如果你在RegularExpressionValidator中使用这个,你必须closures客户端validation,因为JavaScript的正则expression式parsing器不会识别?i令牌。

使用RegEx选项 。

 Regex regExInsensitive = new Regex(@"^[0-9]\s(lbs|kg|kgs)$", RegexOptions.IgnoreCase); 

在其他语言中,您通常可以在Reg Ex结束后指定RegEx修饰符; '不区分大小写'修饰符是'我':

在Perl中:

 if($var =~ /^[0-9]\s(lbs|kg|kgs)$/i) { # the /i means case insensitive # ... } 

在PHP中:

 if(preg_match("/^[0-9]\s(lbs|kg|kgs)$/i", $var)) { // ... } 

我知道这是很久以前的答案,是其他重复问题中最好的答案。 这是一个使用CustomValidator的替代scheme,当真正需要不区分大小写的服务器端和客户端时, 而上/下[A-Za-z] char方法太多了。

这混合了各种其他答案,使用服务器端RegEx对象和客户端JavaScript语法。

的CustomValidator:

 <asp:CustomValidator ID="cvWeight" runat="server" ControlToValidate="txtWeight" OnServerValidate="cvWeight_Validate" ClientValidationFunction="cvWeight_Validate" ValidateEmptyText="true" Text="*" ErrorMessage="Invalid entry." /> 

代码后面:

 protected void cvWeight_Validate(object sender, ServerValidateEventArgs args) { Regex re = new Regex(@"^[0-9]*\s*(lbs|kg|kgs)$", RegexOptions.IgnoreCase); args.IsValid = re.IsMatch(args.Value); } 

客户端validationfunction:

 function cvWeight_Validate(sender, args) { var reWeight = /^[0-9]*\s*(lbs|kg|kgs)$/i; args.IsValid = reWeight.test(args); } 

这对我来说很好,除了使用ValidationSummary。 在客户端validation,错误*显示,但我不能得到错误信息显示在摘要中。 摘要仅在提交时显示。 我认为它应该显示; 我有更新面板和遗留代码的混合,这可能是问题。

这里最简单的就是修改正则expression式

 ^[0-9]*\s*([lL][bB][sS]|[kK][gG][sS]?)$ 

阅读太糟糕了,但是它能正常工作。