请问一下这个正则怎么实现?

提驴腿 2018-09-27 11:52:05
我有现在定义了一个规则,这个规则是必须要有(ABCDEFG)这些字母组成;
当它们不管怎么变换位置,我都认为这个规则已经有了,就不让这个规则进来了,请问下怎么实现?

譬如 string zuhe="ABCDEFG";
现在不管是 string zuhe1="BACDEFG";
现在不管是 string zuhe1="EFGBACD";
我需要让程序认为是已经存在,请问怎么实现这个正则表达式?或者有更好的实现方法吗?
...全文
110 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
提驴腿 2018-09-28
  • 打赏
  • 举报
回复
@xuzuning @娃都会打酱油了 谢版主,我本来想一个个循环取比较的,但是嫌效率太差,就想问问有没有效率更高的实现方式!
xuzuning 2018-09-28
  • 打赏
  • 举报
回复
@"/^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\W).*$/"
应写作
@"^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\W).*$"
xuzuning 2018-09-28
  • 打赏
  • 举报
回复
            var p = @"(?=.*A)(?=.*B)(?=.*C)(?=.*D)(?=.*E)(?=.*F)(?=.*G)";
Console.WriteLine(Regex.IsMatch("ABCDEFG", p)); //True
Console.WriteLine(Regex.IsMatch("BACDEFG", p)); //True
Console.WriteLine(Regex.IsMatch("EFGBACD", p)); //True

Console.WriteLine(Regex.IsMatch("EFOBACD", p)); //False
这种形式的规则串,多用于口令强度检查
比如:@"/^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\W).*$/"
表示:长度不小于8,必须包含大写字母、小写字母、数字和符号
  • 打赏
  • 举报
回复
            var zuhe = "ABCDEFG";

var arr =new string[] { "BACDEFG", "EFGBACD","KCWOQKDL<LAKDKQ" };

foreach (var str in arr)
{
var eq = zuhe.Intersect(str).Distinct().Count() == zuhe.Length;
Console.WriteLine("{0} 符合规则 {1}", str, eq);
}
  • 打赏
  • 举报
回复
你这个是固定字母,字符串本质是char的集合,直接用Linq的交集Intersect判断结果集是否总数和你这些字母总数一样

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧