如何使正则表达式匹配不区分大小写?

65

我有以下正则表达式用于匹配加拿大邮政编码

^[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1} *\d{1}[A-Z]{1}\d{1}$

它能正常工作,但只接受大写字母。我希望它能同时接受大小写字母。


3
只需输入小写字母或将您的正则表达式设置为不区分大小写。 - Blender
哥们,语言标签在哪里啊?C# | Java... - Anirudha
1
语言是 C#,但你的表达式包含 [A-Ya-y],这是不正确的,因为加拿大邮政编码不能包含字母 D、F、I、O、Q 或 U。 - khurram
你可能还应该允许使用破折号作为分隔符。虽然这在技术上不正确,但如果你在意的话,很容易改成空格。 - Steven Fisher
显示剩余2条评论
1个回答

147

只需使用选项IgnoreCase即可,参见.NET正则表达式选项

因此,您的正则表达式创建可能看起来像这样:

Regex r = new Regex(@"^[ABCEGHJKLMNPRSTVXY]\d[A-Z] *\d[A-Z]\d$", RegexOptions.IgnoreCase);

我还移除了您的所有{1},因为它是多余的。每个项目默认情况下只匹配一次,不需要明确指定。

另一种可能性是在无法在对象上设置时使用内联修饰符。

^(?i)[ABCEGHJKLMNPRSTVXY]\d[A-Z] *\d[A-Z]\d$

9
感谢您提高"(?i)"前缀的提及得分,该前缀在MVC中用于声明[RegularExpression("regex-string")]验证属性中的正则表达式非常有用。 - timmi4sa

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