求一句正则表达式

zmidl 2016-03-21 02:18:12
是这样的需求,

123,223,300.....

每个成员数用 小写的逗号分隔 可以是任意的成员数,每个成员数必须 大于100小于500.
这样的正则如何写呢?
...全文
151 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zmidl 2016-03-22
  • 打赏
  • 举报
回复
不搞了抛弃正则了,太落后了。直接程序里判断 try...只要到catch里就都是不通过验证 直接了当。
zmidl 2016-03-22
  • 打赏
  • 举报
回复
引用 7 楼 crystal_lz 的回复:
实在是想不明白为什么那么多人喜欢 把正则当作“程序”来用 正则是用来匹配的 不是用来比较大小的 与其写一段臃肿难懂的正则 还不如一个 split 来的清晰

public CheckInput(string strText){
    if(!Regex.IsMatch(strText,@"^\d{3}(,\d{3})+$")) throw new Exception("输入的数据格式不正确");
    foreach(var v in strText.Split(',')){
        int temp = int.Parse(v);
        if(temp < 100 && temp > 500) throw new Exception(v + " 并不是有效的数据 数据必须为100-500之间");
    }
}
我在判断ip的时候 正则也不会写一大段去验证 而是只是匹配格式【(\d{1,3}\.){3}\d{1,3}】 甚至都不用匹配 直接按 . Split 然后看能不能转换成数字 能就判断 是否在1-255区间

public bool CheckIP(string strIP){
    string[] strTemp = strIP.Split('.');
    if(strTemp.Length != 4) return false;
    foreach(var v in strTemp){ try{ ..转换数字判断范围..}catch{return false} }
}
我也不喜欢正则,又长又烦。你有好的方法推荐不。 我要做的事情就是 375到600的整数 加 逗号隔开 匹配这个,然后我从昨天到现在 一直没有办法去掉小数点。正则貌似不好用。
crystal_lz 2016-03-21
  • 打赏
  • 举报
回复
实在是想不明白为什么那么多人喜欢 把正则当作“程序”来用 正则是用来匹配的 不是用来比较大小的 与其写一段臃肿难懂的正则 还不如一个 split 来的清晰

public CheckInput(string strText){
    if(!Regex.IsMatch(strText,@"^\d{3}(,\d{3})+$")) throw new Exception("输入的数据格式不正确");
    foreach(var v in strText.Split(',')){
        int temp = int.Parse(v);
        if(temp < 100 && temp > 500) throw new Exception(v + " 并不是有效的数据 数据必须为100-500之间");
    }
}
我在判断ip的时候 正则也不会写一大段去验证 而是只是匹配格式【(\d{1,3}\.){3}\d{1,3}】 甚至都不用匹配 直接按 . Split 然后看能不能转换成数字 能就判断 是否在1-255区间

public bool CheckIP(string strIP){
    string[] strTemp = strIP.Split('.');
    if(strTemp.Length != 4) return false;
    foreach(var v in strTemp){ try{ ..转换数字判断范围..}catch{return false} }
}
  • 打赏
  • 举报
回复
375到600
3(7[5-9]|[8-9]\d)|[4-5]\d{2}|600
zmidl 2016-03-21
  • 打赏
  • 举报
回复
引用 2 楼 starfd 的回复:
@"^(([1-4]\d{2}|500),)*([1-4]\d{2}|500)$"
我想要 375 到600的话这样写是吗? @"^((3[7-9][1-7][5-9])|[4-5]\d\d|600,)*(3[7-9][1-7][5-9])|[4-5]\d\d|600)$"
zmidl 2016-03-21
  • 打赏
  • 举报
回复
引用 4 楼 zmidl 的回复:
[quote=引用 2 楼 starfd 的回复:]
@"^(([1-4]\d{2}|500),)*([1-4]\d{2}|500)$"
我想要 375 到600的话这样写是吗? @"^((3[7-9][1-7][5-9])|[4-5]\d\d|600,)*(3[7-9][1-7][5-9])|[4-5]\d\d|600)$"[/quote] @"^((3[7-9][5-9])|[4-5]\d\d|600,)*(3[7-9][5-9])|[4-5]\d\d|600)$"; 1-7这里写错了。
zmidl 2016-03-21
  • 打赏
  • 举报
回复
引用 2 楼 starfd 的回复:
@"^(([1-4]\d{2}|500),)*([1-4]\d{2}|500)$"
如果我是 大于123 小于321 这样的话如何写呢? 1-4的话 就只能100-499
  • 打赏
  • 举报
回复
@"^(([1-4]\d{2}|500),)*([1-4]\d{2}|500)$"
tuoluganzhi207 2016-03-21
  • 打赏
  • 举报
回复
参考“正则表达式获取IP地址”

111,129

社区成员

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

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

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