正则表达式

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/

转载于:https://www.cnblogs.com/lulu19891206/articles/2079128.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值