正则 冒号分号(**:**;**:**;***:**;)

匹配格式 xx:xx;xxxx:xxx;
xx表示除特殊字符外的(数字 字母 下划线 %@ ! # -)等 只要 符合

key:val; 表示一组 可以有多组

我晕,你自己说的要 匹配 但你代码却用的是验证

^([a-zA-Z0-9_%@!#-]+:[a-zA-Z0-9_%@!#-]+;)+$

(\S+:\S+;)+

[a-zA-Z0-9_%@!#-]+:[a-zA-Z0-9_%@!#-]+;

 foreach(Match m in Regex.Matches(yourstr,@"[a-zA-Z0-9_%@!#-]+:[a-zA-Z0-9_%@!#-]+;"))
{
//m.Value 就是你所要的
}