一、使用方法:
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 的字符;