C# 一行正则表达式将6个字母数字与2个字母精确匹配
我正在试图找出如何使用积极的前瞻性来让它工作,但没有成功。我正在玩类似的游戏:C# 一行正则表达式将6个字母数字与2个字母精确匹配,c#,regex,C#,Regex,我正在试图找出如何使用积极的前瞻性来让它工作,但没有成功。我正在玩类似的游戏: ^(?=.*[a-zA-Z0-9])(\w{6})$ 唯一的要求是 1.字符串为6个字符 2.有2个字母和4个数字 因此,积极的匹配应该是: A0123A AA0123 0123AA A01A23您的^(?=.[a-zA-Z0-9])(\w6)$匹配至少有1个ASCII字母或数字的字符串(由于(?=.[a-zA-Z0-9])),并且只有1个单词字符后跟6符号。因此,它将匹配字符串,如16或\u6或a6。因此,它不会
^(?=.*[a-zA-Z0-9])(\w{6})$
唯一的要求是1.字符串为6个字符
2.有2个字母和4个数字 因此,积极的匹配应该是: A0123A
AA0123
0123AA
A01A23您的
^(?=.[a-zA-Z0-9])(\w6)$
匹配至少有1个ASCII字母或数字的字符串(由于(?=.[a-zA-Z0-9])
),并且只有1个单词字符后跟6
符号。因此,它将匹配字符串,如16
或\u6
或a6
。因此,它不会像您期望的那样工作
你可以用
^(?=.{6}$)\d*(?:\p{L}\d*){2}$
见
说明:
-字符串的开头^
-确保字符串中有6个字符的检查(?=.{6}$)
-零位或更多位\d*
-2个字母和0+数字序列(?:\p{L}\d*){2}
-字符串结尾$
\p{L}
替换为[a-zA-Z]
,将\d
替换为[0-9]
此外,为了确保字符串的开头和结尾匹配,请使用\z
锚定,而不是$
您的^(?=.[a-zA-Z0-9])(\w6)$
匹配至少有1个ASCII字母或数字(由于(?=.[a-zA-Z0-9])/code>)且只有1个单词字符后跟6
符号的字符串。因此,它将匹配字符串,如16
或\u6
或a6
。因此,它不会像您期望的那样工作
你可以用
^(?=.{6}$)\d*(?:\p{L}\d*){2}$
见
说明:
^
-字符串的开头
(?=.{6}$)
-确保字符串中有6个字符的检查
\d*
-零位或更多位
(?:\p{L}\d*){2}
-2个字母和0+数字序列
$
-字符串结尾
如果需要将表达式限制为匹配ASCII字母和数字,请将\p{L}
替换为[a-zA-Z]
,将\d
替换为[0-9]
此外,为了确保字符串的开头和结尾匹配,请使用\z
锚定,而不是$