首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在ASP.NET RegularExpressionValidator中使正则表达式不区分大小写

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

Stack Overflow用户
提问于 2010-04-15 05:37:14
回答 4查看 30.3K关注 0票数 43

给定正则表达式:"^[0-9]*\s*(lbs|kg|kgs)$",如何使其不区分大小写?我正尝试在.net正则表达式验证器中使用它,因此我需要在模式中指定不区分大小写。

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-06-17 23:58:35

我发现了。

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

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

我相信这是特定于正则表达式的.NET实现的。因此,如果在RegularExpressionValidator中使用它,就必须关闭客户端验证,因为javascript regex解析器无法识别?i令牌。

票数 56
EN

Stack Overflow用户

发布于 2010-04-15 05:38:49

使用RegEx Options

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

在其他语言中,您通常可以在Reg Ex的末尾指定RegEx修饰符;‘不区分大小写’修饰符是'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)) {
    // ...
}
票数 25
EN

Stack Overflow用户

发布于 2013-02-24 09:48:58

当确实需要区分大小写的服务器端和客户端时,这里有一种使用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。在客户端验证中,错误*显示,但我无法获取要在摘要中显示的错误消息。摘要仅在提交时显示。我认为它应该是显示的;我有一个更新面板和遗留代码的混合,这可能是问题。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2641236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档