正则表达式是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。正则表达式可以用来测试字符串的某个模式,即数据有效性验证,还可以用来替换文本、根据模式匹配从字符串提取一个子字符串等。一个正则表达式就是有普通的字符以及特殊字符组成的文字模式。
创建一个正则表达式有两种表示方式:
1、var re = new RegExp("模式字符串","标志");
例如:re = new RegExp("abc","i");
2、var re = /模式字符串/标志;
例如:re = /abc/i;
特殊字符:
g : 表示全文搜索
m : 表示多行搜索
i : 表示忽略大小写
^ : 脱字符(^)代表字符开始位置,即表示以什么开始的字符串
当 脱字符(^)使用在区间内,则表示排除区间内的所有字符,如 [^0-9]
$ : 匹配输入字符串的结束位置
\s : \s匹配任何空白字符,包括空格、制表符、换页符等等
[a-z] : 表示包含a到z的字符,[ ] 表示范围
\d : 表示包含0到9的字符,相当于[0-9]
\w : 包含大小写字母、数字、下划线的任意字符,相当于[a-zA-Z0-9_]
+ : 表示字符至少要出现一次 * : 表示字符可以出现0次或多次
正则表达式对象的方法
test() : 测试字符串,符合模式时返回true,否则返回false;
exec() : 用正则表达式模式在字符串中运行查找,并返回包含该查找结果的一个数组。
在实际应用中我们经常要去掉用户输入字符串的前导空格和结尾空格,在jQuery中可以用trim()方法来实现。其实我们也可以用javascript自己写个函数来实现:
function trim(s) {
var re1 = /^\s+/;
var re2 = /\s+$/;
s = s.replace(re1,"");
return s.replace(re2,"");
}
这样就实现了该功能。
在String的许多函数都可以使用正则表达式,如replace()方法、split()方法、search()方法、match()方法。
例子:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> New Document </title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
</head>
<script type="text/javascript">
var re1 = new RegExp("abc","i");
var re2 = /^abc/i;
//alert(re2.test("dcdfsdfas"));
var reg3 = /\s/;
//alert(reg3.test("d cdfsdfas"));
var re4 = /[a-zA-Z]/;
//alert(re4.test("F543534GSDF"));
var re5 = /[0-9]/;
//alert(re4.test("F543534GSDF"));
var re6 = /\w\d/; //var re6 = /[a-zA-Z0-9_][0-9]/;
//alert(re6.test("dfdffddd4332"));
var re7 = /\w+/;
//alert(re7.test("$@#$"));
var re8 = /^([a-z])+\s+(\d)+/i;
var str = "Ubontu 8";
//alert(/^\w+/.exec(str));
//alert(re8.exec(str));
function trim(s) {
var re1 = /^\s+/;
var re2 = /\s+$/;
s = s.replace(re1,"");
return s.replace(re2,"");
}
var s1 = " ddfd dfdf dfdf ";
//alert(trim(s1));
var s2 = "133,545,564,232";
//alert(s2.split(",")[0]);
//var s3 = prompt("请输入单词与释义:","");
//alert(s3.split(/\s+/));
var s4 = "My age is 1";
//alert(s4.search(/\d+/));
var s5 = "Ubontu 8.10";
var re9 = /^([a-z]+)\s(\d+)\.(\d+)$/i;
alert(re9.exec(s5));
alert(s5.match(re9));
</script>
<body>
</body>
</html>