求个正则表达式,谢谢

wqandxxj 2011-09-28 01:44:34
应该是个简单的,但是没用过正则表达式,求解答

我做的是个WPF程序,主要是想向TextBox输入一到多个“a-b”这个格式的字符串,中间用逗号隔开,并且a,b均为大于等于0小于等于24的整数,这个应该用正则表达式做但是不会。。。。。。

...全文
143 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
游不出缸的鱼 2011-09-28
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 wqandxxj 的回复:]

我晕 怎么这么多答案 还都不一样 是不是WPF下可用的啊?? 我不要asp的
[/Quote]
是不是WPF不重要,用的是.Net的正则引擎的话效果都一样
a匹配0-24的话 1?\d|2[0-4]
a-b就是 (1?\d|2[0-4])-(1?\d|2[0-4])
一到多个a-b,逗号隔开 (1?\d|2[0-4])-(1?\d|2[0-4])(,(1?\d|2[0-4])-(1?\d|2[0-4]))*
不对分组进行捕获 (?:1?\d|2[0-4])-(?:1?\d|2[0-4])(?:,(?:1?\d|2[0-4])-(?:1?\d|2[0-4]))*
wqandxxj 2011-09-28
  • 打赏
  • 举报
回复
我晕 怎么这么多答案 还都不一样 是不是WPF下可用的啊?? 我不要asp的
huangwenquan123 2011-09-28
  • 打赏
  • 举报
回复
Regex reg = new Regex(@"^(?:(?:\d|1\d|2[0-4])-(?:\d|1\d|2[0-4]),)*(?:\d|1\d|2[0-4])-(?:\d|1\d|2[0-4])$");
  • 打赏
  • 举报
回复

string pattern = @"^(((1\d|2[0-4]|\d\b)-(1\d|2[0-4]|\d\b)),?)+$";
woshiliujie51 2011-09-28
  • 打赏
  • 举报
回复
正则表达式字面量:((\d\-(\d|1\d|2[0-4]),)|(1\d\-(\d|1\d|2[0-4]),)|(2[0-4]\-(\d|1\d|2[0-4]),))*(\d\-(\d|1\d|2[0-4]))|(1\d\-(\d|1\d|2[0-4]))|(2[0-4]\-(\d|1\d|2[0-4]))

0-0,0-10,0-23 true
18-5,19-13,14-24 true
24-9,21-10,23-20 true

0-0,0-10,0-25 false 25超过24了
18-5,19-13,14-24, false 后面多了个逗号
,24-9,21-10,23-20 false 前面多了个逗号
符号都是在英文下的
「已注销」 2011-09-28
  • 打赏
  • 举报
回复
换成我的那个正则就OK了,应该
轻狂小疯 2011-09-28
  • 打赏
  • 举报
回复
呵呵 我随便谢谢哦!
既然是a-b 可以能出现多个的话 并且处于0-24 之间
那: reg=/^([0-9]|1[0-9]|2[0-4]-[0-9]|1[0-9]|2[0-4]){1,10}$/;
[0-9]|1[0-9]|2[0-4] 是判断数处于0-24之间的 因为可能出现多次的话 {1,10}
我只写了可能出现1-10次
nbgcqlk 2011-09-28
  • 打赏
  • 举报
回复
你输入 5-3 试试
[Quote=引用 10 楼 thunder_li 的回复:]

C:\>csc RegTest.cs
Microsoft (R) Visual C# 2005 编译器 版本 8.00.50727.3053
用于 Microsoft (R) Windows (R) 2005 Framework 版本 2.0.50727
版权所有 (C) Microsoft Corporation 2001-2005。保留所有权利。


C:\>regtest
0……
[/Quote]
nbgcqlk 2011-09-28
  • 打赏
  • 举报
回复
[0-24]只能匹配0,1,2,4
楼外楼 2011-09-28
  • 打赏
  • 举报
回复
C:\>csc RegTest.cs
Microsoft (R) Visual C# 2005 编译器 版本 8.00.50727.3053
用于 Microsoft (R) Windows (R) 2005 Framework 版本 2.0.50727
版权所有 (C) Microsoft Corporation 2001-2005。保留所有权利。


C:\>regtest
0-13
OK

C:\>regtest
0-13-12-11
OK
楼外楼 2011-09-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 nbgcqlk 的回复:]

引用 6 楼 thunder_li 的回复:

using System;
using System.Text;
using System.Text.RegularExpressions;

public class RegTest
{
public static void Main()
{
Regex reg=new Regex(@"[0-24]-[0-24]");
st……
[/Quote]
你编译过吗?
你在控制台试试看先
nbgcqlk 2011-09-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 thunder_li 的回复:]

using System;
using System.Text;
using System.Text.RegularExpressions;

public class RegTest
{
public static void Main()
{
Regex reg=new Regex(@"[0-24]-[0-24]");
string x=Console.ReadLine();……
[/Quote]
你这是错的,[0-24] 这个只能匹配0,1,2,4 而不是0-24的整数!
楼外楼 2011-09-28
  • 打赏
  • 举报
回复
测试通过:
0-1
0-24
0-1-23-2-33
楼外楼 2011-09-28
  • 打赏
  • 举报
回复
using System;
using System.Text;
using System.Text.RegularExpressions;

public class RegTest
{
public static void Main()
{
Regex reg=new Regex(@"[0-24]-[0-24]");
string x=Console.ReadLine();
Match M=reg.Match(x);
if(M.Success)
{
Console.WriteLine("OK");
}
else
{
Console.WriteLine("Fail");
}
}
}
danceboy_520 2011-09-28
  • 打赏
  • 举报
回复
这个简单的,参考google
nbgcqlk 2011-09-28
  • 打赏
  • 举报
回复
写不出来 大于等于0小于等于24的表达式
「已注销」 2011-09-28
  • 打赏
  • 举报
回复
\d{1,2}-\d{1,2}

拿去把
wqandxxj 2011-09-28
  • 打赏
  • 举报
回复
我等。。。。。。。等。。。。。。。等。。。。。。
wqandxxj 2011-09-28
  • 打赏
  • 举报
回复
自己顶一下 免得沉下去了

正则表达式善于处理文本,对匹配、搜索和替换等操作都有意想不到的作用。正因如此,正则表达式现在是作为程序员七种基本技能之一*,因此学习和使用它在工作中都能达到很高的效率。 正则表达式应用于程序设计语言中,首次是出现在 Perl 语言,这也让 Perl 奠定了正则表达式旗手的地位。现在,它已经深入到了所有的程序设计语言中,在程序设计语言中,正则表达式可以说是标准配置了。 Java 中从 JDK 1.4 开始增加了对正则表达式的支持,至此正则表达式成为了 Java 中的基本类库,使用时不需要再导入第三方的类库了。Java 正则表达式的语法来源于象征着正则表达式标准的 Perl 语言,但也不是完全相同的,具体的可以参看 Pattern 类的 API 文档说明。 我在一次偶然中发现了位于 java.sun.com 站点上的 Java Tutorial,也在那里看到了关于 Java 的正则表达式教程,感觉它不同于其他的正则表达式教程,文中以大量的匹配实例来进行说明。为了能让 Java 学习者能更好地使用正则表达式,就将其完整地译出了。该教程中所介绍的正则表达式应用仅仅是最为简单的(并没有完全地涉及到 Pattern 类支持的所有正则表达式语法,也没有涉及到高级的应用),适合于从未接触过或者是尚未完全明白正则表达式基础的学习者。在学习完该教程后,应该对正则表达式有了初步的了解,并能熟练地运用 java.util.regex 包中的关于正则表达式的类库,为今后学习更高级的正则表达式技术奠定良好的基础。 教程中所有的源代码都在 src 目录下,可以直接编译运行。由于当前版本的 Java Tutorial 是基于 JDK 6.0 的,因此其中的示例程序也用到了 JDK 6.0 中的新增类库,但正则表达式在 JDK 1.4 就已经存在了,为了方便大家使用,改写了部分的源代码,源代码类名中后缀为"V4"的表示用于 JDK 1.4 或以上版本,"V5"的表示用于 JDK 5.0 或以上版本,没有这些后缀的类在各个版本中均可以正常使用。 由于译者的水平和技术能力有限,译稿虽经多次校对,难免有疏漏之处,敬请大家批评和指正。若有发现不妥之处,请发送邮件至 FrankieGao123@gmail.com,我会在 blog 中进行勘误,谢谢

110,538

社区成员

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

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

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