给定这个正则表达式:"^[0-9]*\s*(lbs|kg|kgs)$"
,如何使它忽略大小写?我正在尝试在 .net 正则表达式验证器中使用它,所以需要在模式中指定大小写不敏感。
由于我正在 RegularExpressionValidator 中指定正则表达式,所以无法在程序中使用 RegexOptions。
给定这个正则表达式:"^[0-9]*\s*(lbs|kg|kgs)$"
,如何使它忽略大小写?我正在尝试在 .net 正则表达式验证器中使用它,所以需要在模式中指定大小写不敏感。
由于我正在 RegularExpressionValidator 中指定正则表达式,所以无法在程序中使用 RegexOptions。
我发现了。
区分大小写:^[0-9]\s(lbs|kg|kgs)$
不区分大小写:(?i:^[0-9]\s(lbs|kg|kgs)$)
我相信这个正则表达式是针对 .NET 实现的。因此,如果您在 RegularExpressionValidator 中使用它,则必须关闭客户端验证,因为 JavaScript 正则表达式解析器将无法识别 ?i
标记。
(?i)
这样的行内修饰符:Perl、Python、PHP、Ruby、Java、.NET......JavaScript 是最后一个抵制它的语言,这确实很麻烦!顺便说一句,@Geoff 在评论中提到了 (?i)
。 - Alan Moore如果需要在服务器端和客户端实现不区分大小写的验证,且使用大写/小写[A-Za-z]字符方法过于繁琐,则可以考虑使用CustomValidator进行替代。
此方法结合了其他答案,使用了服务器端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时。在客户端验证时,错误*
会显示,但我无法在摘要中显示错误消息。只有提交时才会显示摘要。我认为它应该显示; 我有一些更新面板和旧代码的混合,这可能是问题所在。
^[0-9]*\s*([lL][bB][sS]|[kK][gG][sS]?)$
虽然阅读起来有些困难,但这个技术方案会很好地发挥作用。
我们可以使 C#中的正则表达式不区分大小写? : 可以
通过
(?i)
模式构造 或RegexOptions.IgnoreCase
参数来设置内联选项
我们可以使 JavaScript中的正则表达式不区分大小写? : 可以
通过
/pattern/flags
语法或不区分大小写的标志/REGEX/i
来设置标志
(旁白) 我们能否使 HTML5 Pattern属性中的正则表达式不区分大小写 :不能
正如Chris R. Timmons在 RegularExpressionValidator
不忽略大小写 中指出的那样:
RegularExpressionValidator控件中没有允许设置正则表达式选项的属性。
如果您的控件同时进行客户端和服务器端验证,正则表达式必须使用JS和.NET都可以执行的正则表达式语法子集。在这种情况下,要使正则表达式忽略大小写,必须使用字符类构造,如
[a-zA-Z]
来匹配大写和小写字符。如果您的验证仅在服务器端完成,则可以使用更强大的.NET正则表达式语法。在这种情况下,您可以在正则表达式开头放置
(?i)
选项,告诉它忽略大小写。
因此,如果您想使用开箱即用的验证器,则必须使用类似于以下内容的字符集,这是Geoff提出的解决方案:[aA]
[RegularExpressionAttribute]
。 - KyleMit