正则表达式
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/