忽略ASP.NET RegularExpressionValidator中的大小写敏感性

5
我有一个RegularExpressionValidator,其中唯一有效的输入是8个字符长,并由字母MP后跟六个数字组成。目前我使用的正则表达式如下,可以正常工作:
^(MP|mp|Mp|mP)[0-9]{6}$

但感觉有点不太优雅。我希望能够指定MP可以是任何大小写的组合,而无需列出可用的组合。

谢谢,

大卫


可能是 https://dev59.com/GnE85IYBdhLWcg3wvGAR 的重复问题。 - goodeye
1个回答

3
您可以在定义正则表达式对象时进行操作。
Regex exp = new Regex(
    @"^mp[0-9]{6}$",
    RegexOptions.IgnoreCase);

或者你可以使用^(?i)mp[0-9]{6}$语法, 这将只使正则表达式中特定部分不区分大小写。但我个人更喜欢使用第一种选项(更容易阅读)。

有关详细信息,请参阅msnd上的文档。


1
+1 但是内联选项的语法看起来像这样 (?i) ==> @"^(?i)(mp)[0-9]{6}$" - stema
我认为 OP 只是需要这个分组来进行替换,所以可能在这里不需要它,因此 @"^mp[0-9]{6}$" 应该就可以了。 - stema
我会选择使用"?i"语法,因为我没有定义任何正则表达式对象,而是在ASPX页面中设置了正则表达式。 - dlarkin77
2
请参考此答案 https://dev59.com/GnE85IYBdhLWcg3wvGAR#3063373,其中提醒客户端验证无法针对 ?i 语法生效,因为 JavaScript 不支持模式修饰符。 - goodeye

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接