跪求一正则表达式写法 不要什么问题都正则这种问题,自己Split(',')分解出来,循环判断一下不就得了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 string inputStr="";if(Regex.Matches(inputStr,"\d+").Count==3&&Regex.Matches(inputStr,"[-]").Count==2){//满足条件了} 真是的,split一下,循环判断用不到正则表达式 你这样的话,分隔符不是逗号的情况也会满足条件的,出现大于5组数据的情况也会满足条件。这里从需求分析的话,必须先splite分割字符串,确保分割后是5个字符串的数组,再判断里面的元素是数字和减号的个数。 根本用不到正则public static bool ValidateData(string data){ string[] array = data.Split(','); if (array.Length == 5) { int count1 = 0, count2 = 0; foreach (string s in array) { double test; if (count2 == "-") count2++; else if (double.TryParse(s, out test)) count1++; else break; } return count1 == 3 && count2 == 2; } return false;} 但此帖或许能给你些思路: http://bbs.csdn.net/topics/380162205 正则也不是万能的,有些工作量是省不了得,你现在这种情况用split分组之后再判断比较快 还是split来得快啊,虽然代码多点,但是效率高多了 既然一定要用正则,那就罗列各种情况吧,好在就九种情况,正则如下:"^(\d+,\d+,\d+,-,-|\d+,\d+,-,\d+,-|\d+,-,\d+,\d+,-|-,\d+,\d+,\d+,-|\d+,\d+,-,-,\d+|\d+,-,\d+,-,\d+|-,\d+,\d+,-,\d+|\d+,-,-,\d+,\d+|-,\d+,-,\d+,\d+|-,-,\d+,\d+,\d+)$" string[] str = content.Split(',');string condit = "0123456789";int i = 0; len = str.Length;for(; I < len; i++){if(condit .IndexOf(str[i]) > 0){// TD:OO Where You‘s Code}} 你的需求不能用正则,如果你选择了正则,写正则的人不知道该如何下手。如果有规律可循,你可以做一个可视化验证工具,选择有限的输入源,有限验证方式进行判断处理;如果无规律可循,那就只能选择CodeDOM来进行动态编译代码,将方法在运行时编译产生(记得缓存),不过这需要对方会C#,如果不会也有办法,但是就相对麻烦,你得写个傻瓜都会用的,类似易语言的开发工具,后台转换到C#代码后动态编译。 可参考这个博客中 正则表达式进行组合http://blog.csdn.net/s_521_h/article/details/41977739 使用数据库加密文件后出现的问题 linux C# mono C# winform中判断 webbrowser页面加载状态 高分求解,能者接分!!!图像格式转换问题 C#中如何保持磁盘文件与数据库记录删除的完整性? 求助怎样终止一个事件? 如何设置windows服务优先级 C# 单例模式请教 (初学者,但编程急需) 请问如何实现图像的传送 学c#的朋友,公布我们的MSN帐号,有问题可以联系好吗? 在winform中实现多语言的方法除了资源文件与xml还有哪些? 求救~~winform的KTV项目本人菜鸟求搭救吖
if(Regex.Matches(inputStr,"\d+").Count==3&&Regex.Matches(inputStr,"[-]").Count==2)
{
//满足条件了
}
public static bool ValidateData(string data)
{
string[] array = data.Split(',');
if (array.Length == 5)
{
int count1 = 0, count2 = 0;
foreach (string s in array)
{
double test; if (count2 == "-") count2++;
else if (double.TryParse(s, out test)) count1++;
else break;
}
return count1 == 3 && count2 == 2;
}
return false;
}
string[] str = content.Split(',');
string condit = "0123456789";
int i = 0; len = str.Length;
for(; I < len; i++)
{
if(condit .IndexOf(str[i]) > 0)
{
// TD:OO Where You‘s Code
}
}
如果有规律可循,你可以做一个可视化验证工具,选择有限的输入源,有限验证方式进行判断处理;如果无规律可循,那就只能选择CodeDOM来进行动态编译代码,将方法在运行时编译产生(记得缓存),不过这需要对方会C#,如果不会也有办法,但是就相对麻烦,你得写个傻瓜都会用的,类似易语言的开发工具,后台转换到C#代码后动态编译。