C#Regex将aabbccddeeff与两个aabbcc和ddeeff设置相匹配

que*_*en3 1 .net c# regex

当我这样做:

var m = Regex.Match("aabbccddeeff", "[0-9a-fA-F]{6}");
Run Code Online (Sandbox Code Playgroud)

结果我得到的只有aabbcc.实际上(使用.Matches)有两个匹配:aabbcc和ddeeff.

为什么?这会导致DataAnnotations.RegularExpressionAttribute出现问题,因为它需要覆盖整个输入值的单个匹配.

如何正确编写以获得单个匹配?

Ani*_*Ani 5

你想在这里实现什么目标?

提供的正则表达式将尝试匹配正好6个字母/数字的序列.由于输入中有12个连续的字母数字字符,因此有2个连续匹配.Regex.Match返回第一个,并且Regex.Matches它们都完全按照它们应该返回.

如果你想声明整个文本将与正则表达式完全匹配(因为你使用它进行输入验证,我认为是这种情况),所以整个输入字符串应该满足Regex.IsMatch,将表达式更改为:

^[0-9a-fA-F]{6}$
Run Code Online (Sandbox Code Playgroud)

另一方面,如果您不希望将匹配限制为恰好6个字符,请将其更改为:

[0-9a-fA-F]+ 
Run Code Online (Sandbox Code Playgroud)

或者,如果您要匹配12个字符:

[0-9a-fA-F]{12}
Run Code Online (Sandbox Code Playgroud)

当然,你可能需要^$周围的最后2个表达过根据您的需要.