正则表达式
1. 什么是正则表达式
2. 创建正则表达式
3. 获取控制
4. 常用的正则
正则表达式
表示字符串规范的一种表达式,如只能包含数字,第几个字符必须是字母等。
创建正则表达式
创建正则表达式和创建字符串类似,创建正则表达式提供了两种方法,一种是采用 new运算符,
另一个是采用字面量方式。
//使用new RegExp对象
var box=new RegExp('box'); //第一个参数字符串
var box=new RegExp('box','ig'); //第二个参数可选模式修饰符,模式修饰符是可选参数,i忽略大小写,g全局匹配,m多行匹配
//第二种创建方式采用字面量方式。
var box=/box/; //直接用两个反斜杠括起来,匹配box字符串
var box=/box/ig; //在第二个斜杠后面加上模式修饰符,匹配box字符串且忽略大小写
RegExp对象包含两个测试方法:
test()和 exec(),功能基本相似,用于测试字符串匹配
var pattern = new RegExp('box','i');//i是忽略大小写
var str="this is a Box";
alert(pattern.test(str));//返回true。
var pattern = new RegExp('box','i');//i是忽略大小写
var str="this is a Box";
alert(pattern.exec(str));//返回Box(被匹配的那段文本)
//简便写法
alert(/box/i.test('This is a box');
字符串正则表达式方法
除了 test()和 exec()方法,String对象也提供了 4个使用正则表达式的方法
match(pattern) 返回 pattern中的子串或 null
replace(pattern,replacement) 用 replacement替换 pattern
search(pattern) 返回字符串中 pattern开始位置
split(pattern) 返回字符串按指定 pattern拆分的数组
代码举例:
var pattern = /box/ig;
var str = 'this is a Box ! wo sih box boxBox';
alert(str.match(pattern));//返回Box,box,box,Box
var pattern = /box/ig;
var str = 'this is a Box ! wo sih box boxBox';
alert(str.search(pattern)); //返回10,第十位置出现box,从0开始数
var pattern = /box/ig;
var str = 'this is a Box ! wo sih box boxBox';
alert(str.replace(pattern,'fix'));//返回this is a fix! wo sih fix fixfix
var pattern = /box/ig;
var str = 'this is a Box ! wo sih box boxBox';
alert(str.split(pattern));//返回this is a,!wo sih,,,
RegExp对象的静态属性
用于对正则结果的处理,取结果的特殊位置字符串
属性 短名 含义
input
当前被匹配的字符串lastMatch
& 最后一个匹配字符串
lastParen
+最后一对圆括号内的匹配子串leftContext
` 最后一次匹配前的子串
multiline
∗用于指定是否所有的表达式都用于多行的布尔值rightContext
’ 在上次匹配之后的子串
举例:
var pattern = /box/ig;
var str = 'this is a Box ! wo sih box boxBox';
pattern.test(str);//先执行正则
alert(RegExp.input);
alert(RegExp.lastMatch);
alert(RegExp.lastParen);
//为了方便调试,可以将结果输出到控制台,
console.log(RegExp.lastMatch);
获取控制
正则表达式由普通字符和元字符组成。元字符就是[0-9],[a-z],[A-Z]这些类型。
正则表达式元字符是包含特殊含义的字符。它们有一些特殊功能,可以控制
匹配模式的方式。
反斜杠后的元字符将失去其特殊含义。
1. 单个字符和数字
2. 空白字符
3. 锚字符
4. 重复字符
5. 替代字符
6. 记录字符
[0-9] [a-z] [A-Z]
\d 匹配数字
\D 匹配非数字 跟[^0-9] 相同
\w 匹配字母和数字及_
\W 匹配非字母和数字及_
\0 匹配null的字符
\b 匹配空格
\f 匹配进纸字符
\n 匹配换行字符。
\r 匹配回车符字符。
\s 匹配任何空白,包括空格、制表、换页等。与 “[ \f\n\r\t\v]” 等效。
\S 匹配任何非空白字符。与 “[^ \f\n\r\t\v]” 等效。
^ 匹配输入的开头。
$ 匹配输入的末尾。
x? 匹配一个或0个x
x* 匹配0个或多个
x+ 匹配至少一个x
(xyz)+ 匹配至少一个(xyz)
x{m,n} 匹配最少m个,最多n个x
a|b|c 三个中的任意个
举例:
var pattern = /g.*gle/;//匹配0个或多个g并以gle结尾
var str = "ggle";
alert(pattern.test(str));
常用的正则
检查邮政编码
var pattern=/[1-9][0-9]{5}/;
var str='224000';
//共 6位数字,第一位不能为 0
alert(pattern.test(str));
简单的电子邮件验证
var pattern=/^([a-zA-Z0-9_\.\-]+)@([a-zA-Z0-9_\.\-]+)\.([a-zA-Z]{2,4})$/;
var str='yc60.com@gmail.com';
alert(pattern.test(str));
var pattern=/^([\w\.\-]+)@([\w\.\-]+)\.([\w]{2,4})$/;
var str='yc60.com@gmail.com';
alert(pattern.test(str));