在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]?)$
阅读太糟糕了,但是它能正常工作。