为什么我的 C# 正则表达式要求 7 个字符接受 8 个字符

本文关键字:字符 我的 正则表达式 为什么 | 更新日期: 2023-09-27 18:31:38

我有一个 C# 正则表达式,我想匹配 7 个字符:

string digits4 = "''d{4}";
string allowable3 = "[a-zA-z0-9 $%&#?+=!]{3}";
Regex regex1 = new Regex(digits4 + allowable3);

allowable3 旨在匹配三个字母、数字或任何后续字符。但是,以下返回 true:

regex1.IsMatch("1234abc^")

这让我感到困惑有两个原因:

  1. 匹配的模式有 8 个字符。
  2. allowable3不包括"^"。我必须在我的"正字符组"(方括号内的部分)中进行一些额外的、意想不到的通配符匹配,但我没有看到它。

为什么我的 C# 正则表达式要求 7 个字符接受 8 个字符

使用锚点 ^ 和 $ 绕开模式以要求完整的字符串匹配。IsMatch 在模式未定位时搜索部分匹配项。

您的 A-z 模式不仅匹配字母,还匹配 ^ 和其他一些符号。您需要将其更改为 A-Za-z。

string allowable3 = "[a-zA-Z0-9 $%&#?+=!]{3}";
Regex regex1 = new Regex("^" + digits4 + allowable3 + "$");