云顶娱乐平台:正则表达式

 

1,引子

正则表达式的使用,可以通过简单的方法来实现强大的功能。就是用一串字符验证是符合一种规范,这个规范就是正则表达式。

2,正则表达式的历史

RegExp 是正则表达式的缩写
正则表达式的第一个实用应用程序就是Unix 中的 ged 编辑器。

5,全部符号解释

表2.常用的元字符

代码

说明

^

匹配字符串的开始

$

匹配字符串的结束

.

匹配除换行符以外的所有字符

w

匹配字母或数字或下划线或汉字

s

匹配任意的空白符(空格)

d

匹配数字

b

匹配单词的开始或结束

d{8}表示数字重复出现8次,如果是QQ号可以这样表示d{5,12}
表2.常用的限定符

代码/语法

说明

*

重复零次或更多次

+

重复一次或更多次

?

重复零次或一次

{n}

重复n次

{n,}

重复n次或更多次

{n,m}

重复n到m次,n不能大于m

8,C#中对正则的使用

RegularExpression 组合体

使用RegExp规则类需引用System.Text.RegularExpressions文件

该名字空间中包含6个类和一个定义

描述

Capture

包含一次匹配的结果

CaptureCollection

Captrue的序列

Group

一次组记录的结果,由Capture继承而来

Match

一次表达式的匹配结果,由Group继承而来

MatchCollection

执行替换操作时使用的代理

Regex

编译后表达式的实例

   

Regex包含的一些静态的方法:

方法

描述

Escape

对字符串中的regex中的转义符进行转义

IsMatch

判断是否匹配字符串,返回一上布尔值

Match

返回Match的实例

Matchs

返回一系列Match的方法

Replace

用替换字符串替换匹配的表达式

Split

返回一系列由表达式决定的字符串

Unescape

不对字符串中的转义字符进行转义

示例

常用表达式

验证对象

验证表达式

数字字母下划线

 

手机号

 

电话号

 

电话或手机号

 

1,正则表达式验证手机号

Regex reg=new
Regex(@”^(12[0-9]|186|188|150|151|158|159|147)d{8}$”);

1,判断是否匹配

using System;

using
System.Collections.Generic;

using System.Linq;

using System.Text;

using
System.Text.RegularExpressions;

 

namespace
ConsoleApplication1

{

class Program

{

static void
Main(string[] args)

{

while (true)

{

Console.WriteLine(“请输入一个三位数字”);

string regstr =
@”^ddd$”;

Regex reg = new
Regex(regstr);

string intputstr =
Console.ReadLine();

if
(reg.IsMatch(intputstr))

云顶娱乐平台:正则表达式。 {

Console.WriteLine(“正确”);

}

else

{

Console.WriteLine(“错误”);

}

Console.ReadKey();

}

}

}

}

 

 

2,正则表达式判断开头字母是否为8

if (dt != null &&
dt.Rows.Count > 0)

{

string a =
dt.Rows[0][0].ToString();

string regstr =
@”^8…….$”;

Regex reg = new
Regex(regstr);

if (reg.IsMatch(a))

{

flag = true;

}

else { flag = false; }

}

 

 

例3:

string regstr =
@”^(?0d{2}[) -]?d{8}$”;

Regex reg = new
Regex(regstr);

string intputstr =
“010-22222222”;

if
(reg.IsMatch(intputstr))

{

Console.WriteLine(“正确”);

}

else

{

Console.WriteLine(“错误”);

}

 

例4:MatchEvaluator

return
_JsonDateReg.Replace(jsonStr,new
System.Text.RegularExpressions.MatchEvaluator(obj=>string.Format(“:”{0:yyyy-MM-dd
HH:mm:ss}””)));

云顶娱乐平台 1云顶娱乐平台 2/**//// <summary>
云顶娱乐平台 3        ///
正则表达式判断是否为数字
云顶娱乐平台 4        /// </summary>
云顶娱乐平台 5        /// <param name=”strNumber”></param>
云顶娱乐平台 6        /// <returns></returns>
云顶娱乐平台 7        public static bool IsNumber(string strNumber)
云顶娱乐平台 8云顶娱乐平台 9        云顶娱乐平台 10{
云顶娱乐平台 11            //^[-+]?[1-9]d*.?[0]*$
云顶娱乐平台 12            Regex objNotNumberPattern = new Regex(“[^0-9.-]”);
云顶娱乐平台 13            Regex objTwoDotPattern = new Regex(“[0-9]*[.][0-9]*[.][0-9]*”);
云顶娱乐平台 14            Regex objTwoMinusPattern = new Regex(“[0-9]*[-][0-9]*[-][0-9]*”);
云顶娱乐平台 15            String strValidRealPattern = “^([-]|[.]|[-.]|[0-9])[0-9]*[.]*[0-9]+$”;
云顶娱乐平台 16            String strValidIntegerPattern = “^([-]|[0-9])[0-9]*$”;
云顶娱乐平台 17            Regex objNumberPattern = new Regex(“(” + strValidRealPattern + “)|(” + strValidIntegerPattern + “)”);
云顶娱乐平台 18
云顶娱乐平台 19            return !objNotNumberPattern.IsMatch(strNumber) &&
云顶娱乐平台 20            !objTwoDotPattern.IsMatch(strNumber) &&
云顶娱乐平台 21            !objTwoMinusPattern.IsMatch(strNumber) &&
云顶娱乐平台 22            objNumberPattern.IsMatch(strNumber);
云顶娱乐平台 23        }
云顶娱乐平台 24
云顶娱乐平台 25云顶娱乐平台 26        /**//// <summary>
云顶娱乐平台 27        ///
正则表达式判断是否为日期
云顶娱乐平台 28        /// 验证格式:
云顶娱乐平台 29        /// YYYY-MM
云顶娱乐平台 30        /// YYYY-MM(M)-DD(M)
云顶娱乐平台 31        /// YYYYMMDD       
云顶娱乐平台 32        /// </summary>
云顶娱乐平台 33        /// <param name=”date”></param>
云顶娱乐平台 34        /// <returns></returns>
云顶娱乐平台 35        public static bool IsDate(string date)
云顶娱乐平台 36云顶娱乐平台 37        云顶娱乐平台 38{
云顶娱乐平台 39            //(([0-9]{4}-)([0-9]{1,2}-)[0-9]{1,2})
云顶娱乐平台 40            Regex ymPattern = new Regex(@”^d{4}-?(?:0[1-9]|1[0-2])$”);
云顶娱乐平台 41            Regex yyyyMMdd = new Regex(@”^((d{2}(([02468][048])|([13579][26]))[-/s]?((((0?[13578])|(1[02]))[-/s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[-/s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[-/s]?((0?[1-9])|([1-2][0-9])))))|(d{2}(([02468][1235679])|([13579][01345789]))[-/s]?((((0?[13578])|(1[02]))[-/s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[-/s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[-/s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))”); //日期部分
云顶娱乐平台 42            
云顶娱乐平台 43            return !ymPattern.IsMatch(date) &&
云顶娱乐平台 44                yyyyMMdd.IsMatch(date);
云顶娱乐平台 45        }
云顶娱乐平台 46
云顶娱乐平台 47云顶娱乐平台 48        /**//// <summary>
云顶娱乐平台 49        ///
正则表达式判断是否为日期
云顶娱乐平台 50        /// 验证格式:     
云顶娱乐平台 51        /// YYYY-MM(M)-DD(M) HH:MM
云顶娱乐平台 52        /// YYYYMMDD HH:MM
云顶娱乐平台 53        /// </summary>
云顶娱乐平台 54        /// <param name=”date”></param>
云顶娱乐平台 55        /// <returns></returns>
云顶娱乐平台 56        public static bool IsDateTime(string date)
云顶娱乐平台 57云顶娱乐平台 58        云顶娱乐平台 59{
云顶娱乐平台 60            string regex = @”^((d{2}(([02468][048])|([13579][26]))[-/s]?((((0?[13578])|(1[02]))[-/s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[-/s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[-/s]?((0?[1-9])|([1-2][0-9])))))|(d{2}(([02468][1235679])|([13579][01345789]))[-/s]?((((0?[13578])|(1[02]))[-/s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[-/s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[-/s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))”; //日期部分
云顶娱乐平台 61            regex += @”(s(((0?[0-9])|([1-2][0-3])):([0-5]?[0-9])((s)|(:([0-5]?[0-9])))))?$”; //时间部分
云顶娱乐平台 62            System.Text.RegularExpressions.RegexOptions options = ((System.Text.RegularExpressions.RegexOptions.IgnorePatternWhitespace | System.Text.RegularExpressions.RegexOptions.Multiline) | System.Text.RegularExpressions.RegexOptions.IgnoreCase);
云顶娱乐平台 63            System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(regex, options);
云顶娱乐平台 64
云顶娱乐平台 65            return reg.IsMatch(date);
云顶娱乐平台 66        }
云顶娱乐平台 67
云顶娱乐平台 68        public static bool IsEmail(string mail)
云顶娱乐平台 69云顶娱乐平台 70        云顶娱乐平台 71{
云顶娱乐平台 72            Regex reg = new Regex(@”^([a-zA-Z0-9_-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([a-zA-Z0-9-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$”);
云顶娱乐平台 73
云顶娱乐平台 74            return reg.IsMatch(mail);
云顶娱乐平台 75        }
云顶娱乐平台 76
云顶娱乐平台 77云顶娱乐平台 78        /**//// <summary>
云顶娱乐平台 79        ///
正则表达式是否为网址,验证格式:
云顶娱乐平台 80        /// wwww.xxx.xxx
云顶娱乐平台 81        /// xxx.xxx.xxx
云顶娱乐平台 82        /// 
云顶娱乐平台 83        /// 
云顶娱乐平台 84        /// </summary>
云顶娱乐平台 85        /// <param name=”uri”></param>
云顶娱乐平台 86        /// <returns></returns>
云顶娱乐平台 87        public static bool IsUri(string uri)
云顶娱乐平台 88云顶娱乐平台 89        云顶娱乐平台 90{
云顶娱乐平台 91            Regex reg = new Regex(@”^(((ht|f)tp(s?))://)?((([a-zA-Z0-9_-]{2,}.)+[a-zA-Z]{2,})|((?:(?:25[0-5]|2[0-4]d|[01]dd|d?d)(?(.?d).)){4}))(:[a-zA-Z0-9]+)?(/[a-zA-Z0-9-._?,’/\+&%$#=~]*)?$”);
云顶娱乐平台 92            return reg.IsMatch(uri);
云顶娱乐平台 93        }

select    121 / 60 ,121-(121 / 60*60)  –得出分钟则可计算小时


 在后台.cs文件中使用正则表达式验证时间日期格式,还需要其他格式只需要换正则表达式即可。

一、时间格式验证

验证小时分钟的正则表达式,格式  
HH:mm    ^(([0-1]\d)|(2[0-4])):[0-5]\d$

select DATEDIFF(MI,’2016-08-20 13:13:20′,’2016-08-20 15:14:20′)  
–查询出两个时间相差多少分钟(121)

datepart 缩写
yy, yyyy
季度 qq, q
mm, m
年中的日 dy, y
dd, d
wk, ww
星期 dw, w
小时 hh
分钟 mi, n
ss, s
毫秒 ms
微妙 mcs
纳秒 ns

System.Text.RegularExpressions.Regex reg = new
System.Text.RegularExpressions.Regex(“^(([0-1]\d)|(2[0-4])):[0-5]\d$”);

{throw new Exception(“时间格式错误”)}

bool flag = reg.IsMatch(“时间字段”);

例:

验证年月日时分秒的正则表达式,格式yyyy-MM-dd HH:mm:ss   
    ([0-9]{4})-([0-9]{2})-([0-9]{2})
([0-9]{2}):([0-9]{2}):([0-9]{2})

 使用DATEDIFF函数计算时间差,第一个参数datepart为上面图表中缩写,用于计算出结果时间的单位,结果类型为int类型,第二个参数为起始时间,要求是时间格式,第三个参数是结束时间,要求是时间格式。

if (!flags)

 二、计算时间