正则表达式空格字符不起作用

时间:2015-03-12 16:24:40

标签: c# asp.net regex

我的正则表达式是加拿大邮政编码,只允许有效的字母:
Regex pattern = new Regex("^[ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ][/s][0-9][ABCEGHJKLMNPRSTVWXYZ][0-9]$");
我遇到的问题是我想允许在每个集合之间放置一个空格但是找不到正确的字符来使用。

4 个答案:

答案 0 :(得分:1)

你的正则表达式中有空格(\ s)的正斜杠而不是反斜杠。以下正则表达式应该可以工作。

@"^[ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ][\s][0-9][ABCEGHJKLMNPRSTVWXYZ][0-9]$"

Regexper

答案 1 :(得分:1)

如果您只是在搜索空间使用\s

在给定示例中提供转义序列字符\使用@ verbitm文字字符,如下所示。

Regex pattern = new Regex(@"^[ABCEGHJKLMNPRSTVXY][0-9]\s[ABCEGHJKLMNPRSTVWXYZ[0-9]\s[ABCEGHJKLMNPRSTVWXYZ][0-9]$");

正如评论中所指出的,如果空格是可选的,您可以使用?量词,如下所示。

Regex pattern = new Regex(@"^[ABCEGHJKLMNPRSTVXY][0-9]\s?[ABCEGHJKLMNPRSTVWXYZ[0-9]\s?[ABCEGHJKLMNPRSTVWXYZ][0-9]$");

答案 2 :(得分:0)

\s令牌用于空格而不是/s

一些加速正则表达式开发的便利工具:

  • regexr.com有助于语法并提供实时测试
  • regexpr.com(是的,我知道:))可视化你的表达。

答案 3 :(得分:0)

根据其他答案....

  • 使用\s代替/s
  • 你不应该将[\s]括起来,因为它已经暗示了一个完整的角色类。

也...

  • 在大多数语言中,您可能不希望使用双引号"..."作为正则表达式的分隔符,因为这可能是在应用模式之前插入\s。这当然值得一试。
  • 使用尾随量词\s*\s?来允许空格是可选的。