一、使用方法: a.后台处理: 引用命名空间using System.Text.RegularExpressions; string valEx = @"^/d+$"; if (!Regex.IsMatch(txtVal.Text.Trim(), valEx)) { txtVal.Focus(); return ; } b.javascript方法处理 exec 方法 用正则表达式模式在字符串中运行查找,并返回包含该查找结果的一个数组。 function RegExpTest() { var ver = Number(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion()) if (ver >= 5.5){ // 测试 JScript 的版本。 var src = "The rain in Spain falls mainly in the plain."; var re = //w+/g; // 创建正则表达式模式。 var arr; while ((arr = re.exec(src)) != null) document.write(arr.index + "-" + arr.lastIndex + arr + "/t"); } else{ alert("请使用 JScript 的更新版本"); } } 返回值:0-3The 4-8rain 9-11in 12-17Spain 18-23falls 24-30mainly 31-33in 34-37the 38-43plain test 方法 返回一个 Boolean 值,它指出在被查找的字符串中是否存在模式。 function TestDemo(re, s) { var s1; // 声明变量。 // 检查字符串是否存在正则表达式。 if (re.test(s)) // 测试是否存在。 s1 = " contains "; // s 包含模式。 else s1 = " does not contain "; // s 不包含模式。 return("'" + s + "'" + s1 + "'"+ re.source + "'"); // 返回字符串。 } 函数调用:document.write (TestDemo(/ain+/ ,"The rain in Spain falls mainly in the plain.")); 返回值:'The rain in Spain falls mainly in the plain.' contains 'ain+ match 方法 使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回。 function MatchDemo() { var r, re; // 声明变量。 var s = "The rain in Spain falls mainly in the plain"; re = /ain/i; // 创建正则表达式模式。 r = s.match(re); // 尝试匹配搜索字符串。 return(r); // 返回第一次出现 "ain" 的地方。 } 返回值:ain search 方法 返回与正则表达式查找内容匹配的第一个子字符串的位置。 function SearchDemo() { var r, re; // 声明变量。 var s = "The rain in Spain falls mainly in the plain."; re = /falls/i; // 创建正则表达式模式。 r = s.search(re); // 查找字符串。 return(r); // 返回 Boolean 结果。 } 返回值:18 二、常见正则: ========= 常用正则式 匹配中文字符的正则表达式: [/u4e00-/u9fa5] 匹配双字节字符 ( 包括汉字在内 ) : [^/x00-/xff] 匹配空行的正则表达式: /n[/s| ]*/r 匹配 HTML 标记的正则表达式: /<(.*)>.*<///1>|<(.*) //>/ 匹配首尾空格的正则表达式: (^/s*)|(/s*$) 匹配 IP 地址的正则表达式: /(/d+)/.(/d+)/.(/d+)/.(/d+)/g // 匹配 Email 地址的正则表达式: /w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)* 匹配网址 URL 的正则表达式: http://(/[/w-]+/.)+[/w-]+(/[/w- ./?%&=]*)? sql 语句: ^(select|drop|delete|create|update|insert).*$ 1 、非负整数: ^/d+$ 2 、正整数: ^[0-9]*[1-9][0-9]*$ 3 、非正整数: ^((-/d+)|(0+))$ 4 、负整数: ^-[0-9]*[1-9][0-9]*$ 5 、整数: ^-?/d+$ 6 、非负浮点数: ^/d+(/./d+)?$ 7 、正浮点数: ^((0-9)+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*))$ 8 、非正浮点数: ^((-/d+/./d+)?)|(0+(/.0+)?))$ 9 、负浮点数: ^(-(( 正浮点数正则式 )))$ 10 、英文字符串: ^[A-Za-z]+$ 11 、英文大写串: ^[A-Z]+$ 12 、英文小写串: ^[a-z]+$ 13 、英文字符数字串: ^[A-Za-z0-9]+$ 14 、英数字加下划线串: ^/w+$ 15 、 E-mail 地址: ^[/w-]+(/.[/w-]+)*@[/w-]+(/.[/w-]+)+$ 16 、 URL : ^[a-zA-Z]+://(/w+(-/w+)*)(/.(/w+(-/w+)*))*(/?/s*)?$ 或: ^http:[A-Za-z0-9]+/.[A-Za-z0-9]+[//=/?%/-&_~`@[/]/':+!]*([^<>/"/"])*$ 17 、邮政编码: ^[1-9]/d{5}$ 18 、中文: ^[/u0391-/uFFE5]+$ 19 、电话号码: ^((/(/d{2,3}/))|(/d{3}/-))?(/(0/d{2,3}/)|0/d{2,3}-)?[1-9]/d{6,7}(/-/d{1,4})?$ 20 、手机号码: ^((/(/d{2,3}/))|(/d{3}/-))?13/d{9}$ 21 、双字节字符 ( 包括汉字在内 ) : ^/x00-/xff 22 、匹配首尾空格: (^/s*)|(/s*$) (像 vbscript 那样的 trim 函数) 23 、匹配 HTML 标记: <(.*)>.*<///1>|<(.*) //> 24 、匹配空行: /n[/s| ]*/r 25 、提取信息中的网络链接: (h|H)(r|R)(e|E)(f|F) *= *('|")?(/w|//|//|/.)+('|"| *|>)? 26 、提取信息中的邮件地址: /w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)* 27 、提取信息中的图片链接: (s|S)(r|R)(c|C) *= *('|")?(/w|//|//|/.)+('|"| *|>)? 28 、提取信息中的 IP 地址: (/d+)/.(/d+)/.(/d+)/.(/d+) 29 、提取信息中的中国手机号码: (86)*0*13/d{9} 30 、提取信息中的中国固定电话号码: (/(/d{3,4}/)|/d{3,4}-|/s)?/d{8} 31 、提取信息中的中国电话号码(包括移动和固定电话): (/(/d{3,4}/)|/d{3,4}-|/s)?/d{7,14} 32 、提取信息中的中国邮政编码: [1-9]{1}(/d+){5} 33 、提取信息中的浮点数(即小数): (-?/d*)/.?/d+ 34 、提取信息中的任何数字 : (-?/d*)(/./d+)? 35 、 IP : (/d+)/.(/d+)/.(/d+)/.(/d+) 36 、电话区号: /^0/d{2,3}$/ 37 、腾讯 QQ 号: ^[1-9]*[1-9][0-9]*$ 38 、帐号 ( 字母开头,允许 5-16 字节,允许字母数字下划线 ) : ^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 39 、中文、英文、数字及下划线: ^[/u4e00-/u9fa5_a-zA-Z0-9]+$ 三、了解正则表达语法: 转义匹配语法 : 转义语法 涉及字符( 语法解释) 语法例子 “/ ”+ 实际字符 / . * + ? | ( ) { }^ $ 例如:// 匹配字符“/ ” /n 匹配换行 /r 匹配回车 /t 匹配水平制表符 /v 匹配垂直制表符 /f 匹配换页 /nnn 匹配一个8 进制ASCII /xnn 匹配一个16 进制ASCII /unnnn 匹配4 个16 进制的Uniode /c+ 大写字母 匹配Ctrl- 大写字母 例如:/cS 匹配Ctrl+S 重复匹配语法: 重复语法 语法解释 语法例子 {n} 匹配n 次字符 /d{3} 匹配/d/d/d, 不匹配/d/d 或/d/d/d/d {n,} 匹配n 次和n 次以上 /w{2} 匹配/w/w 和/w/w/w 以上, 不匹配/w {n,m} 匹配n 次上m 次下 /s{1,3} 匹配/s,/s/s,/s/s/s, 不匹配/s/s/s/s ? 匹配0 或1 次 5? 匹配5 或0 ,不匹配非5 和0 + 匹配一次或多次 /S+ 匹配一个以上/S ,不匹配非一个以上/S * 匹配0 次以上 /W* 匹配0 以上/W ,不匹配非N*/W 字符定位语法: 重复语法 语法解释 语法例子 ^ 定位后面模式开始位置 $ 前面模式位于字符串末端 /A 前面模式开始位置 /z 前面模式结束位置 /Z 前面模式结束位置( 换行前) /b 匹配一个单词边界 /B 匹配一个非单词边界 字符匹配语法: 字符语法 语法解释 语法例子 /d 匹配数字(0~9 ) ‘/d ’匹配8, 不匹配12 ; /D 匹配非数字 ‘/D ’匹配c, 不匹配3 ; /w 匹配任意单字符 ‘/w/w ’ 匹配A3, 不匹配@3 ; /W 匹配非单字符 ‘/W ’匹配@, 不匹配c ; /s 匹配空白字符 ‘/d/s/d ’匹配3 d, 不匹配abc ; /S 匹配非空字符 ‘/S/S/S ’匹配A#4, 不匹配3 d ; . 匹配任意字符 ‘.... ’匹配A$ 5, 不匹配换行 ; [ …] 匹配括号中任意字符 [b-d] 匹配b 、c 、d, 不匹配e ; [^ …] 不匹配括号内字符 [^b-z] 匹配a, 不匹配b-z 的字符;
