有点难度,正则表达式. 任意5位以上的数字,要求按以下规则排除连续位相同如:22222后3位数相同如:22111连续交替如:121212顺序排列如:3456789反顺序排列如:654321求正则表达式实现,有点难度吧?分不够另开贴在加 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 前几个好办 (\d)\1{4,}|\d{2,}?(\d)\2\2|((\d)\d)\3+\4?正反顺序的比较麻烦 后面两个就不要用正则了,提供一个方法:string str="4567";string pattern1="0123456789";string pattern2="9876543210";if(pattern1.IndexOf(str)>-1||pattern2.IndexOf(str)>-1)//排除 sorry,顺序的发现漏洞,会有不连续但是大小顺序的情况 判断连续不用正则 static void Main(string[] args) { string ptn = @"(\d)\1{4}|\d{2}(\d)\2{2}|(\d{2})\3{2}"; string[] sSet = { "13146","22222", "22111", "121212","12345","765432" }; foreach (string s in sSet) { Console.WriteLine(Regex.Match(s, ptn).Success || IsSortNum(s));//false,true,true,true,true,true } } /// <summary> /// 判断数字是否连续 /// </summary> /// <param name="s"></param> /// <returns></returns> static bool IsSortNum(string s) { char[] nums = s.ToCharArray(); int t = (int)nums[1] - (int)nums[0]; if (Math.Abs(t) != 1) return false; for(int i=1;i<nums.Length-1;i++) { if ((int)nums[i + 1] - (int)nums[i] != t) { return false; } } return true; } 改一下:正则中^(\d)\1{5,}$ 匹配字符为5个以上相同数字(\d)\2{2,}$ 匹配后三位相同数字^(\d{2})\3{2,}$ 匹配二位重复交错数字 static void Main(string[] args) { string ptn = @"^(\d)\1{5,}$|(\d)\2{2,}$|^(\d{2})\3{2,}$"; string[] sSet = { "13146", "22222", "22111", "121212", "12345", "765432" }; foreach (string s in sSet) { Console.WriteLine(Regex.Match(s, ptn).Success || IsSortNum(s));//false,true,true,true,true,true } } /// <summary> /// 判断数字是否连续 /// </summary> /// <param name="s"></param> /// <returns></returns> static bool IsSortNum(string s) { char[] nums = s.ToCharArray(); int t = (int)nums[1] - (int)nums[0]; if (Math.Abs(t) != 1) return false; for (int i = 1; i < nums.Length - 1; i++) { if ((int)nums[i + 1] - (int)nums[i] != t) { return false; } } return true; } string ptn = @"^(\d)\1{4,}$|(\d)\2{2,}$|^(\d{2})\3{2,}$";^(\d)\1{4,}$ 匹配字符为5个以上相同数字 dataTimepicker控件值作为查询数据库条件格式~~~ C#串口通信问题 如何调用亚马逊的API winform图片文件(嵌入或者外部文件) 请教C#中字符串代码格式的问题。 请问怎么将Excel表的数据导入到Oracle数据库中,那位大哥指点指点,谢谢! 怎样在C#.NET的WINDOWS应用程序中加入网站的链接? 求教水晶报表问题?Load report failed (重发) 500分诚问,如何将水晶报表集成到应用程序中! 自定义“打开文件”对话框的位置栏 c#如何调用Delphi的动态库窗体(急求) C#winform 数据备份与还原某一时间段的数据
string str="4567";
string pattern1="0123456789";
string pattern2="9876543210";
if(pattern1.IndexOf(str)>-1||pattern2.IndexOf(str)>-1)//排除
static void Main(string[] args)
{
string ptn = @"(\d)\1{4}|\d{2}(\d)\2{2}|(\d{2})\3{2}";
string[] sSet = { "13146","22222", "22111", "121212","12345","765432" };
foreach (string s in sSet)
{
Console.WriteLine(Regex.Match(s, ptn).Success || IsSortNum(s));//false,true,true,true,true,true
} } /// <summary>
/// 判断数字是否连续
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
static bool IsSortNum(string s)
{
char[] nums = s.ToCharArray();
int t = (int)nums[1] - (int)nums[0];
if (Math.Abs(t) != 1) return false;
for(int i=1;i<nums.Length-1;i++)
{
if ((int)nums[i + 1] - (int)nums[i] != t)
{
return false;
}
}
return true;
}
正则中
^(\d)\1{5,}$ 匹配字符为5个以上相同数字
(\d)\2{2,}$ 匹配后三位相同数字
^(\d{2})\3{2,}$ 匹配二位重复交错数字
static void Main(string[] args)
{
string ptn = @"^(\d)\1{5,}$|(\d)\2{2,}$|^(\d{2})\3{2,}$";
string[] sSet = { "13146", "22222", "22111", "121212", "12345", "765432" };
foreach (string s in sSet)
{
Console.WriteLine(Regex.Match(s, ptn).Success || IsSortNum(s));//false,true,true,true,true,true
} } /// <summary>
/// 判断数字是否连续
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
static bool IsSortNum(string s)
{
char[] nums = s.ToCharArray();
int t = (int)nums[1] - (int)nums[0];
if (Math.Abs(t) != 1) return false;
for (int i = 1; i < nums.Length - 1; i++)
{
if ((int)nums[i + 1] - (int)nums[i] != t)
{
return false;
}
}
return true;
}
^(\d)\1{4,}$ 匹配字符为5个以上相同数字