鉴于此正则表达式:"^[0-9]*\s*(lbs|kg|kgs)$"
如何使其不区分大小写?我试图在.net正则表达式验证器中使用它,所以我需要在模式中指定不区分大小写。
我不能以编程方式使用RegexOptions,因为我在RegularExpressionValidator中指定了正则表达式
答案 0 :(得分:51)
我发现了。
区分大小写:^[0-9]\s(lbs|kg|kgs)$
不区分大小写:(?i:^[0-9]\s(lbs|kg|kgs)$)
我相信这是特定于正则表达式的.NET实现。因此,如果您在RegularExpressionValidator中使用它,则必须关闭客户端验证,因为javascript正则表达式解析器将无法识别?i
令牌。
答案 1 :(得分:22)
Regex regExInsensitive = new Regex(@"^[0-9]\s(lbs|kg|kgs)$", RegexOptions.IgnoreCase);
在其他语言中,您通常可以在Reg Ex结束后指定RegEx修饰符; 'case insensitive'修饰符是'i':
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)) {
// ...
}
答案 2 :(得分:4)
我知道很久以前就已经回答了这个问题,并且是其他重复问题中最好的答案。这是一个使用CustomValidator的替代方案,当真正需要服务器端和客户端不区分大小写时;并且上/下[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);
}
客户端验证功能:
function cvWeight_Validate(sender, args) {
var reWeight = /^[0-9]*\s*(lbs|kg|kgs)$/i;
args.IsValid = reWeight.test(args);
}
这对我来说很好,除非使用ValidationSummary。在客户端验证中,错误*
显示,但我无法在摘要中显示错误消息。摘要仅在提交时显示。我认为它应该显示;我有更新面板和遗留代码的混合,这可能是问题。
答案 3 :(得分:3)
最简单的方法就是将正则表达式修改为
^[0-9]*\s*([lL][bB][sS]|[kK][gG][sS]?)$
阅读起来很糟糕,但它会正常工作。
答案 4 :(得分:1)
我们可以制作Regex case-insensitive in C#吗? :是
设置内联选项
我们可以制作Regex case-insensitive in JavaScript吗? :是
通过
设置标记/pattern/flags
语法或不敏感标记/REGEX/i
(除了)我们可以Regex case-insensitive in HTML5 Pattern Attribute?:否
Chris R. Timmons指出RegularExpressionValidator
doesn't ignore case:
RegularExpressionValidator控件中没有属性 允许设置正则表达式选项。
如果您的控件同时进行客户端和服务器端验证,则 正则表达式必须使用正则表达式语法的子集 JS和.NET可以执行。在这种情况下,要使正则表达式忽略 有必要使用像
[a-zA-Z]
这样的字符类构造 匹配大写和小写字符。如果您的验证仅在服务器端完成,则可以使用 更强大的.NET正则表达式语法。在这种情况下,你可以 将
(?i)
选项放在正则表达式的开头以告诉它 忽略案例。
所以,如果你想使用开箱即用的验证器,你就会遇到Geoff使用这样的字符集的解决方案:[aA]