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:提取所有的连接
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 *| 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/ |