用正则,我想匹配 5位数字里,有两个8的一组
如:87837,12345,45678,
取:87837(只两个8)
只两个是8的,5位数。。
如:87837,12345,45678,
取:87837(只两个8)
只两个是8的,5位数。。
解决方案 »
- C# 中 怎么把 \\x00\\x00\\x00\\x00\\xaa\\x8f\\x63\\x3b 转换为 \x00\x00\x00\x00 求救 在线等
- 怎么样做即时程序
- c#执行数据库语句的回滚?
- 如何做最最简单的语音识别,只有两个音(男,女)。
- 问一个SQL语句怎么写!!简单
- GridView合并里面的单元格,怎么做?
- 2003安装.net2003时老报说没装frontpage服务器扩展.可是我明明装了
- 请问如何读取一个文件夹中的所有excel文件?(winfrom)
- 求助!TCP协议多连接问题
- 在.net中怎么把一个char 的两个字节提取出来转换为一个byte数组
- 关于线程结束的一个问题
- 求一个有点困难正则表达式,大神们快来
string numstr = "87837,12345,45678,68844";
MatchCollection mc = Regex.Matches(numstr, @"\d{5}");
foreach (Match mcnum in mc)
{
string num = mcnum.Value;
if (num.ToCharArray().Where(x => x.ToString() == "8").Count() == 2)
{
Console.WriteLine(mcnum.Value);
}
}
var result = Regex.Matches(str, @"(?(\d{5}(?=,|$))\d*?(8)[^\1]*?\1[^\1,]*)").OfType<Match>().Where(a=>!string.IsNullOrEmpty(a.Value)).Select(a=>a.Value);
{
int[] ary=new int[]{87837,12345,45678,112481824};
Regex reg=new Regex(@"^(?!([0-7]|9)+$)^(?!8+$)(?!([0-7]|9)*8([0-7]|9)*$)(?!([0-7]|9)*8([0-7]|9)*8([0-7]|9)*8([0-7]|9)*$)(?!([0-7]|9)*8([0-7]|9)*8([0-7]|9)*8([0-7]|9)*8([0-7]|9)*$)\d{5}$");
foreach(int i in ary)
Console.WriteLine("{0} --- {1}",i,reg.IsMatch(i.ToString()));
/*
87837 --- True
12345 --- False
45678 --- False
112481824 --- False
*/
}
{
string str="87837,12345,45678,114818";
Regex reg=new Regex(@"^(?!([0-7]|9)+$)^(?!8+$)(?!([0-7]|9)*8([0-7]|9)*$)(?!(([0-7]|9)*8){3}([0-7]|9)*$)(?!(([0-7]|9)*8){4}([0-7]|9)*$)\d{5}$");
foreach(string s in str.Split(','))
Console.WriteLine("{0} --- {1}",s,reg.IsMatch(s));
}