正则表达式
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 | 不对字符串中的转义字符进行转义 |
示例
常用表达式
验证对象 | 验证表达式 | ||
数字字母下划线 | ^[a-z,A-Z,0-9,_]*$ | ||
手机号 | ^(13[0-9]|14[0-9]|15[0-9]|18[0-9])\d{8}$ | ||
电话号 | ^(0[0-9]{2,3}\-?)?([2-9][0-9]{6,7})+(\-[0-9]{1,4})?$ | ||
电话或手机号 | ^(0[0-9]{2,3}\-?)?([2-9][0-9]{6,7})+(\-[0-9]{1,4})?$|^(13[0-9]|14[0-9]|15[0-9]|18[0-9])\d{8}$ |
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 = @"^\d\d\d$";
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 = @"^\(?0\d{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}\"")));