求验证时间段的正则表达式,急,给100分!

shuzhiguoxing 2011-07-26 05:55:02
我在winform窗体中的txtbox中输入时间格式是:
(1)10:20;;12:32(一共是8个时间点可以为空中间的时间点必须要以“;”相隔)
(2)10:11-12:20;;;13:15-14:25(一共是8个时间段,可以为空,时间段不能有交叉,两个时间段中间的空治必须要“;”隔开)

求这两个正则表达式
...全文
622 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxldfang 2011-07-27
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 shuzhiguoxing 的回复:]
7楼

我怎么不限制“;”必须输入7个?
[/Quote]

是必须输入8个,要有7个分号分隔

若不限制分号个数(0-7个随意),可以:
string pattern = @"^(\s*((\d|[01]\d|2[0-4]):[0-5]\d)?\s*[;;]){0,7}\s*((\d|[01]\d|2[0-4]):[0-5]\d)?\s*$";
shuzhiguoxing 2011-07-27
  • 打赏
  • 举报
回复
7楼

我怎么不限制“;”必须输入7个?
HDNGO 2011-07-27
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 shuzhiguoxing 的回复:]

9楼分析的很有道理,
用正则表达式不能控制吗?还要用程序控制?
我还是希望能用正则表达式一次控制。
[/Quote]我一直希望有一天母鸡能生出大象~~
HDNGO 2011-07-27
  • 打赏
  • 举报
回复
正则不好做比较判断之类的事情的。。。
q107770540 2011-07-27
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 shuzhiguoxing 的回复:]
#6楼
或者你可以详细说明一下 “时间段不能有交叉“ 具体指什么意思



一个时间段不能另一个时间段中出现。比如10:10-12:10 其他的时间不能在这个时间段之间,例:10:20-13:30就是错误的。两个时间段有交叉的时间
[/Quote]

这本来就不是 正则表达式应该干的活
shuzhiguoxing 2011-07-27
  • 打赏
  • 举报
回复
9楼分析的很有道理,
用正则表达式不能控制吗?还要用程序控制?
我还是希望能用正则表达式一次控制。
shuzhiguoxing 2011-07-27
  • 打赏
  • 举报
回复

#6楼
或者你可以详细说明一下 “时间段不能有交叉“ 具体指什么意思



一个时间段不能另一个时间段中出现。比如10:10-12:10 其他的时间不能在这个时间段之间,例:10:20-13:30就是错误的。两个时间段有交叉的时间
sxldfang 2011-07-26
  • 打赏
  • 举报
回复
第2题

需要程序控制,先获得16个时间点(8个时间段,每个有开始和结束两个时间点)

从前到后,时间应越来越大,当然,有可能例外,比如:

(可能开始时间大于终止时间?比如今天23:15到明天6:00)
zhaowentao_bc 2011-07-26
  • 打赏
  • 举报
回复
学习中,顶下
sxldfang 2011-07-26
  • 打赏
  • 举报
回复
第1题

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
namespace sxLdfang
{
class Program
{
static void Main(string[] args)
{
string html = @"0:00;5:00;8:07;08:59;10:20;;;";
string pattern = @"^(\s*((\d|[01]\d|2[0-4]):[0-5]\d)?\s*[;;]){7}\s*((\d|[01]\d|2[0-4]):[0-5]\d)?\s*$";
if(Regex.IsMatch(html,pattern))
{
Console.WriteLine("匹配成功!");
}
else
{
Console.WriteLine("输入存在错误!");
}
Console.ReadKey();
}
}
}
q107770540 2011-07-26
  • 打赏
  • 举报
回复
(([01]\d|2[1-3])[::][0-5]\d(-([01]\d|2[1-3])[::][0-5]\d)?)?([;;]|$)

或者你可以详细说明一下 “时间段不能有交叉“ 具体指什么意思
q107770540 2011-07-26
  • 打赏
  • 举报
回复
时间段不能有交叉
===
这个用正则来做不太合适吧
wsd_asp 2011-07-26
  • 打赏
  • 举报
回复
第二个:
Regex r = new Regex(@"\d{1,2}[:]\d{1,2}[-]\d{1,2}[:]\d{1,2}[;]|([ ]{1}[;])");
int count = r.Matches(result).Count;
wsd_asp 2011-07-26
  • 打赏
  • 举报
回复
第一个:
Regex reg = new Regex(@"\d{1,2}[:]\d{1,2}[;]|([ ]{1}[;])");
int count = reg.Matches(value).Count;
中文名: 正则表达式经典实例 原名: Regular Expression Cookbook 作者: (美)高瓦特斯(Goyvaerts,J.) (美)利维森(Levithan,S.)译者: 郭耀 资源格式: PDF 版本: 扫描版 出版社: 人民邮电出版社书号: 9787115228321发行时间: 2010年06月01日 地区: 大陆 语言: 简体中文 简介: 编辑推荐 每个程序员都会遇到需要使用正则表达式的情况,但是要用好正则表达式却并不容易。本书提供了100多个实例,以帮助读者使用正则表达式处理数据和文本。即使有经验的用户也经常会遇到性能不佳、误报、漏报等让人挠头的错误,本书对于如何使用正则表达式来解决一些常见的问题给出了按部就班的解决方案,其中包括c#、Java、JavaScript、Perl、PHP、Python、Ruby和VB.NET的实例。   本书主要包括以下内容:   通过一个精练的教程理解正则表达式的基本原理和技巧;   在不同的编程语言和脚本语言中有效使用正则表达式;   学习如何对输入进行合法性检查和格式化;   处理单词、文本行、特殊字符和数值;   学习如何在URL、路径、标记语言和数据交换中使用正则   表达式;   学习更高深的正则表达式特性中的微妙之处;   理解在不同语言中正则表达式的APl、语法和行为之间的   区别;   创建更好的正则表达式来满足个性化的需。 内容简介 本书讲解了基于8种常用的编程语言使用正则表达式的经典实例。书中提供了上百种可以在实战中使用的实例,以帮助读者使用正则表达式来处理数据和文本。对于如何使用正则表达式来解决性能不佳、误报、漏报等常见的错误以及完成一些常见的任务,本书给出了涉及基于C#、Java、JavaScript、Perl、PHP、Python、Ruby和VB.NET等编程语言的解决方案。   本书的读者对象是对正则表达式感兴趣的软件开发人员和系统管理员。本书旨在教会读者很多新的技巧以及如何避免语言特定的陷阱,读者可以通过本书提供的实例解决方案库来解决实践中的复杂问题。 作者简介 Jan Goyvaerts领导着Just Great Software公司,他在这个公司设计和开发了一些最流行的正则表达式软件。他的产品中包括RegexBuddy,世界上唯一可以模拟l5种正则表达式流派特性的正则表达式编辑器,以及PowerGREP,Microsoft Windows平台上功能最强大的9rep工具。 目录: 第1章 正则表达式简介 1.1 正则表达式的定义 1.2 使用正则表达式的工具 第2章 正则表达式的基本技巧 2.1 匹配字面文本 2.2 匹配不可打印字符 2.3 匹配多个字符之一 2.4 匹配任意字符 2.5 匹配文本行起始和/或文本行结尾 2.6 匹配整个单词 2.7 Unicode代码点、属性、区块和脚本 2.8 匹配多个选择支之一 2.9 组和捕获匹配中的子串 2.10 再次匹配先前匹配的文本 2.11 捕获和命名匹配子串 2.12 把正则表达式的一部重复多次 2.13 选择最小和最大重复次数 2.14 消除不必要的回溯 2.15 避免重复逃逸 2.16 检查一个匹配,但不添加到整体匹配中 2.17 根据条件匹配两者之一 2.18 向正则表达式中添加注释 2.19 在替代文本中添加字面文本 2.20 在替代文本中添加正则匹配 2.21 把部的正则匹配添加到替代文本中 2.22 把匹配上下文插入到替代文本中 第3章 使用正则表达式编程 3.1 在源代码中使用字面正则表达式 3.2 导入正则表达式函数库 3.3 创建正则表达式对象 3.4 设置正则表达式选项 3.5 检查是否可以在目标字符串中找到匹配 3.6 检查正则表达式能否整个匹配目标字符串 3.7 获取匹配文本 3.8 决定匹配的位置和长度 3.9 获取匹配文本的一部 3.10 获取所有匹配的列表 3.11 遍历所有匹配 3.12 在过程代码中对匹配结果进行验证 3.13 在另一个匹配中查找匹配 3.14 替换所有匹配 3.15 使用匹配的子串来替换匹配 3.16 使用代码中生成的替代文本来替换匹配 3.17 替换另一个正则式匹配中的所有匹配 3.18 替换另一个正则式匹配之间的所有匹配 3.19 拆字符串 3.20 拆字符串,保留正则匹配 3.21 逐行查找 第4章 合法性验证和格式化 4.1 E-mail地址的合法性验证 4.2 北美电话号码的合法性验证和格式化 4.3 国际电话号码的合法性验证 4.4 传统日期格式
中文名: 正则表达式经典实例 原名: Regular Expression Cookbook 作者: (美)高瓦特斯(Goyvaerts,J.) (美)利维森(Levithan,S.)译者: 郭耀 资源格式: PDF 版本: 扫描版 出版社: 人民邮电出版社书号: 9787115228321发行时间: 2010年06月01日 地区: 大陆 语言: 简体中文 简介: 编辑推荐 每个程序员都会遇到需要使用正则表达式的情况,但是要用好正则表达式却并不容易。本书提供了100多个实例,以帮助读者使用正则表达式处理数据和文本。即使有经验的用户也经常会遇到性能不佳、误报、漏报等让人挠头的错误,本书对于如何使用正则表达式来解决一些常见的问题给出了按部就班的解决方案,其中包括c#、Java、JavaScript、Perl、PHP、Python、Ruby和VB.NET的实例。   本书主要包括以下内容:   通过一个精练的教程理解正则表达式的基本原理和技巧;   在不同的编程语言和脚本语言中有效使用正则表达式;   学习如何对输入进行合法性检查和格式化;   处理单词、文本行、特殊字符和数值;   学习如何在URL、路径、标记语言和数据交换中使用正则   表达式;   学习更高深的正则表达式特性中的微妙之处;   理解在不同语言中正则表达式的APl、语法和行为之间的   区别;   创建更好的正则表达式来满足个性化的需。 内容简介 本书讲解了基于8种常用的编程语言使用正则表达式的经典实例。书中提供了上百种可以在实战中使用的实例,以帮助读者使用正则表达式来处理数据和文本。对于如何使用正则表达式来解决性能不佳、误报、漏报等常见的错误以及完成一些常见的任务,本书给出了涉及基于C#、Java、JavaScript、Perl、PHP、Python、Ruby和VB.NET等编程语言的解决方案。   本书的读者对象是对正则表达式感兴趣的软件开发人员和系统管理员。本书旨在教会读者很多新的技巧以及如何避免语言特定的陷阱,读者可以通过本书提供的实例解决方案库来解决实践中的复杂问题。 作者简介 Jan Goyvaerts领导着Just Great Software公司,他在这个公司设计和开发了一些最流行的正则表达式软件。他的产品中包括RegexBuddy,世界上唯一可以模拟l5种正则表达式流派特性的正则表达式编辑器,以及PowerGREP,Microsoft Windows平台上功能最强大的9rep工具。 目录: 第1章 正则表达式简介 1.1 正则表达式的定义 1.2 使用正则表达式的工具 第2章 正则表达式的基本技巧 2.1 匹配字面文本 2.2 匹配不可打印字符 2.3 匹配多个字符之一 2.4 匹配任意字符 2.5 匹配文本行起始和/或文本行结尾 2.6 匹配整个单词 2.7 Unicode代码点、属性、区块和脚本 2.8 匹配多个选择支之一 2.9 组和捕获匹配中的子串 2.10 再次匹配先前匹配的文本 2.11 捕获和命名匹配子串 2.12 把正则表达式的一部重复多次 2.13 选择最小和最大重复次数 2.14 消除不必要的回溯 2.15 避免重复逃逸 2.16 检查一个匹配,但不添加到整体匹配中 2.17 根据条件匹配两者之一 2.18 向正则表达式中添加注释 2.19 在替代文本中添加字面文本 2.20 在替代文本中添加正则匹配 2.21 把部的正则匹配添加到替代文本中 2.22 把匹配上下文插入到替代文本中 第3章 使用正则表达式编程 3.1 在源代码中使用字面正则表达式 3.2 导入正则表达式函数库 3.3 创建正则表达式对象 3.4 设置正则表达式选项 3.5 检查是否可以在目标字符串中找到匹配 3.6 检查正则表达式能否整个匹配目标字符串 3.7 获取匹配文本 3.8 决定匹配的位置和长度 3.9 获取匹配文本的一部 3.10 获取所有匹配的列表 3.11 遍历所有匹配 3.12 在过程代码中对匹配结果进行验证 3.13 在另一个匹配中查找匹配 3.14 替换所有匹配 3.15 使用匹配的子串来替换匹配 3.16 使用代码中生成的替代文本来替换匹配 3.17 替换另一个正则式匹配中的所有匹配 3.18 替换另一个正则式匹配之间的所有匹配 3.19 拆字符串 3.20 拆字符串,保留正则匹配 3.21 逐行查找 第4章 合法性验证和格式化 4.1 E-mail地址的合法性验证 4.2 北美电话号码的合法性验证和格式化 4.3 国际电话号码的合法性验证 4.4 传统日期格式的合法性验证 4.5 对传统日期格式进行精确的合法性验证 4.6 传统时间格式的合法性验证 4.7 检查ISO 8601格式的日期和时间 4.8 限制输入只能为字母数字字符 4.9 限制文本长度 4.10 限制文本中的行数 4.11 肯定响应的检查 4.12 社会安全号码的合法性验证 4.13 ISBN的合法性验证 4.14 ZIP代码的合法性验证 4.15 加拿大邮政编码的合法性验证 4.16 英国邮政编码的合法性验证 4.17 查找使用邮局信箱的地址 4.18 转换姓名格式 4.19 信用卡号码的合法性验证 4.20 欧盟增值税代码 第5章 单词、文本行和特殊字符 5.1 查找一个特定单词 5.2 查找多个单词之一 5.3 查找相似单词 5.4 查找除某个单词之外的任意单词 5.5 查找后面不跟着某个特定单词的任意单词 5.6 查找不跟在某个特定单词之后的任意单词 5.7 查找临近单词 5.8 查找重复单词 5.9 删除重复的文本行 5.10 匹配包含某个单词的整行内容 5.11 匹配不包含某个单词的整行 5.12 删除前导和拖尾的空格 5.13 把重复的空白替换为单个空格 5.14 对正则表达式元字符进行转义 第6章 数字 6.1 整数 6.2 十六进制数字 6.3 二进制数 6.4 删除前导 6.5 位于某个特定范围之内的整数 6.6 在某个特定范围之内的十六进制数 6.7 浮点数 6.8 含有千位隔符的数 6.9 罗马数字 第7章 URL、路径和Internet地址 7.1 URL合法性验证 7.2 在全文中查找URL 7.3 在全文中查找加引号的URL 7.4 在全文中寻找加括号的URL 7.5 把URL转变为链接 7.6 URN合法性验证 7.7 通用URL的合法性验证 7.8 从URL中提取通信协议方案 7.9 从URL中抽取用户名 7.10 从URL中抽取主机名 7.11 从URL中抽取端口号 7.12 从URL中抽取路径 7.13 从URL中抽取查询 7.14 从URL中抽取片段 7.15 域名合法性验证 7.16 匹配IPv4地址 7.17 匹配IPv6地址 7.18 Windows路径的合法性验证 7.19 解Windows路径 7.20 从Windows路径中抽取盘符 7.21 从UNC路径中抽取服务器和共享名 7.22 从Windows路径中抽取文件夹 7.23 从Windows路径中抽取文件名 7.24 从Windows路径中抽取文件扩展名 7.25 去除文件名中的非法字符 第8章 标记语言和数据交换 8.1 查找XML风格的标签 8.2 把标签b替换为strong 8.3 删掉除em和strong之外的所有XML风格标签 8.4 匹配XML名称 8.5 添加p和br标签将纯文本转换为HTML 8.6 在XML风格的标签中查找某个特定属性 8.7 向不包含cellspacing属性的 table标签中添加该属性 8.8 删除XML风格的注释 8.9 在XML风格的注释中查找单词 8.10 替换在CSV文件中使用的隔符 8.11 抽取某个特定列中的CSV域 8.12 匹配INI段头 8.13 匹配INI段块 8.14 匹配INI名称-值对
本书中文版为《精通正则表达式(第3版), 本书关注的是一种强大的工具——“正则表达式”。它将教会读者如何使用正则表达式解决各种问题,以及如何充使用支持正则表达式的工具和语言。许多关于正则表达式的文档都没有介绍这种工具的能力,而本书的目的正是让读者“精通”正则表达式。   许多种工具都支持正则表达式(文本编辑器、文字处理软件、系统工具、数据库引擎,等等),不过,要想充挖掘正则表达式的能力,还是应当将它作为编程语言的一部。例如Java、JScript、Visual Basic、VBScript、JavaScript、ECMAScript、C、C++、C#、elisp、Perl、Python、Tcl、Ruby、PHP、sed和awk。事实上,在一些用上述语言编写的程序中,正则表达式扮演了极其重要的角色。   正则表达式能够得到众多语言和工具的支持是有原因的:它们极其有用。从较低的层面上来说,正则表达式描述的是一串文本(a chunk of text)的特征。读者可以用它来验证用户输入的数据,或者也可以用它来检索大量的文本。从较高的层面上来说,正则表达式容许用户掌控他们自己的数据——控制这些数据,让它们为自己服务。掌握正则表达式,就是掌握自己的数据。 本书的第1 版写于1996年,以满足当时存在的需。那时还没有关于正则表达式的详尽文档,所以它的大部能力还没有被发掘出来。正则表达式文档倒是存在,但它们都立足于“低层次视角”。我认为,那种情况就好像是教一些人英文字母,然后就指望他们会说话。   第2 版与第1 版间隔了五年半的时间,这期间,互联网迅速流行起来,正则表达式的形式也有了极大的扩张,这或许并不是巧合。几乎所有工具软件和程序语言支持的正则表达式也变得更加强大和易于使用。Perl、Python、Tcl、Java和Visual Basic都提供了新的正则支持。新出现的支持内建正则表达式的语言,例如PHP、Ruby、C#,也已经发展壮大,流行开来。在这段时间里,本书的核心——如何真正理解正则表达式,以及如何使用正则表达式——仍然保持着它的重要性和参考价值。   不过,第1版已经逐渐脱离了时代,必须加以修订,才能适应新的语言和特性,也才能对应正则表达式在互联网世界中越来越重要的地位。第2 版出版于2002年,这一年的里程碑是java.util.regex、Microsoft .NET Framework和Perl 5.8的诞生。第2 版全面覆盖了这些内容。关于第2 版,我唯一的遗憾就是,它没有提及PHP。自第2 版诞生以来的4 年里,PHP的重要性一直在增加,所以,弥补这一缺憾是非常迫切的。   第3 版在前面的章节中增加了PHP的相关内容,并专门为理解和应用PHP的正则表达式增加了一章全新的内容。另外,该版对Java的章节也进行了修订,做了可观的扩充,反映了Java1.5和Java1.6的新特性。   

110,535

社区成员

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

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

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