正则表达式

1.正则表达式的作用和组成

作用:进行文本处理的技术 于语言无关

组成:是由普通的字符以及特殊的字符组成的文字模式

2.元字符

       。匹配任意单个字符,出\n以为

       [ ]匹配括号中的任意一个字符

()定义组并且将匹配这个表达式的字符保存到一个临时区域 作用(改变优先级,定义提取组)

| 将两个匹配条件进行逻辑“或“运算(优先级最低)

*匹配0到多个再它之前的子表达式

+匹配前面子表达式一次或多次

?(1)匹配前面子表达式零次或一次(2)终止贪婪模式

{n}匹配确定n次

{n,}至少匹配n次

{n,m}最少匹配n次且最多匹配m次

^(1)正则表达式的开始(2)取非

$正则表达式的结尾

3.简写的表达式

       \d代表数字

       \D代表非数字

       \s 代表换行符Tab键空白字符(即空格)

       \S带表非空白字符

       \w字母或数字或汉字或下划线

\W 非\w

注:d:digital;s:space、w:word。大写就是“非”

4.。NET中的正则表达式

       在。NET中存在于 System.Text.RegularExpressions命名空间下

       三个常用的方法:

              Regex.IsMatch(“字符串”,”正则表达式”) 判断是否匹配 返回值是bool

              Regex.Match(“字符串”,”正则表达式”) 字符串提取 返回值是Match

Regex.Matches(“字符串”,”正则表达式”) 提取多个字符串 返回值是MatchCollection

Regex.Matches 中提取Group的值

正则表达式中用()将要提取的内容括起来,然后就可以通过Match的Groups属性来得到所有的提取元素,注意Groups的序号是从1开始的,0(存储的是本身匹配的字符串)

Eg:提取所有的连接

string str ="<a href=\"www.baidu.com\">baidu</a>fdsfdsfdsfdfd<a href=\"www.google.com\">google</a>乱七八糟什么都有ffdsf<a href=\"www.163.com\">163</a>s辅导书frewrewre<a href=\"www.sohu.com\">sohu</a><h1>这个是测试!!</h1><a href=\"www.sina.com.cn\">sina</a>sfdsfdss";

MatchCollection c
= Regex.Matches(str,@"<[Aa](\s+?)(.*?)(\s*?)>.+?</[Aa]>");
foreach(Match m in c)
{
//得到所有的连接
Console.WriteLine((m.Groups[2].Value));
}

Regex.Replace((“字符串”,”正则”,”替换内容”) 字符串替换替换 返回替换后的字符串将字符串中匹配的内容替换为指定的内容

便签:

^[1-9]\d*$    //匹配正整数
^-[1-9]\d*$   //匹配负整数
^-?[1-9]\d*$   //匹配整数
^[1-9]\d*|0$  //匹配非负整数(正整数 + 0)
^-[1-9]\d*|0$   //匹配非正整数(负整数 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$   //匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$  //匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  //匹配浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$   //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$  //匹配非正浮点数(负浮点数 + 0)
评注:处理大量数据时有用,具体应用时注意修正

匹配特定字符串:
^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串
验证数字:^[0-9]*$
验证n位的数字:
^\d{n}$
验证至少n位数字:
^\d{n,}$
验证m
-n位的数字:^\d{m,n}$
验证零和非零开头的数字:
^(0|[1-9][0-9]*)$
验证有两位小数的正实数:
^[0-9]+(.[0-9]{2})?$
验证有1
-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
验证非零的正整数:
^\+?[1-9][0-9]*$
验证非零的负整数:
^\-[1-9][0-9]*$
验证非负整数(正整数
+ 0^\d+$
验证非正整数(负整数
+ 0^((-\d+)|(0+))$
验证长度为3的字符:
^.{3}$
验证由26个英文字母组成的字符串:
^[A-Za-z]+$
验证由26个大写英文字母组成的字符串:
^[A-Z]+$
验证由26个小写英文字母组成的字符串:
^[a-z]+$
验证由数字和26个英文字母组成的字符串:
^[A-Za-z0-9]+$
验证由数字、26个英文字母或者下划线组成的字符串:
^\w+$
验证用户密码:
^[a-zA-Z]\w{5,17}$ 正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。
验证是否含有
^%&',;=?$\" 等字符:[^%&',;=?$\x22]+
验证汉字:
^[\u4e00-\u9fa5],{0,}$
验证Email地址:
^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
验证InternetURL:
^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ ;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$
验证电话号码:^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$:--正确格式为:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。
验证身份证号(15位或18位数字):
^\d{15}|\d{}18$
验证一年的12个月:
^(0?[1-9]|1[0-2])$ 正确格式为:“01-09”和“1”“12
验证一个月的31天:
^((0?[1-9])|((1|2)[0-9])|30|31)$ 正确格式为:01、09和1、31
整数:
^-?\d+$
非负浮点数(正浮点数
+ 0):^\d+(\.\d+)?$
正浮点数
^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
非正浮点数(负浮点数
+ 0^((-\d+(\.\d+)?)|(0+(\.0+)?))$
负浮点数
^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
浮点数
^(-?\d+)(\.\d+)?

//验证输入的保修期、保换期是否是正整数
Regex regex = new Regex(@"^[1-9]\d*$");
if (regex.IsMatch(iitRepairDate.Text))
{
MessageBox.Show(
"请输入正确的保修期!", "输入错误");
}
else if (regex.IsMatch(iitReplaceDate.Text))
{
MessageBox.Show(
"请输入正确的保换期!", "输入错误");
}

比较好用的几个验证
1. Email:
^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+([;.](([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+)*$
2. IP地址正则表达式:
^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$
3. URL匹配:
^(http|https|ftp)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|localhost|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&%\$#\=~_\-]+))*$

一个查正则表达式的网站http://www.regexlib.com/

posted @ 2011-06-12 20:54  SharonWang  阅读(365)  评论(1编辑  收藏  举报