正则表达式是对文本字符串进行验证和格式化的方式。
有时候用户需要在html表单中填写姓名,地址,邮箱等信息,在表单提交到服务器之前,JS程序会先检查一下填入表单中的信息是否符合要求,例如邮箱的格式要有@符号,以.com或.cn来结尾;年龄不能小于0等等。正则表达式就可以起到验证字符串的作用。这样的客户端验证可以节约大量的服务器端的系统资源,并且提供更好的客户体验。
1.创建正则表达式
1.1 new运算符
var box = new RegExp('Box'); //RegExp类表示正则表达式 括号里的第一个参数是字符串
alert(box); //输出结果为/Box/ 两个斜杠是正则表达式的字面量表示法
var box = new RegExp('Box','g'); //括号里第二个参数是可选的模式修饰符,有三种,i表示忽略大小写; g表示全局匹配; m表示多行匹配
alert(box);
1.2 字面量方式
var box = /Box/; //使用字面量方法创建正则表达式
alert(box); //仍然输出/Box/var box = /Box/g; //使用了模式修饰符
alert(box);
2. 测试正则表达式
RegExp对象包含两个方法: test()和exec(),功能基本相似,用于测试字符串匹配。
test()方法在字符串中查找是否存在制定的正则表达式并返回布尔值。存在返回true,不存在返回false.
exec()方法也是查找指定的正则表达式,如果方法执行成功,则返回包含该查找字符串的相关信息数组。如果执行失败,返回null.
test()用法如下:
用new运算符表示:
var pattern = new RegExp('Box'); //创建正则表达式(模式)
var str = 'box'; //创建字符串
alert(pattern.text(str)); //返回false,因为大小写不匹配
var pattern = new RegExp('Box','i'); //忽略大小写
var str = 'box';
alert(pattern.test(str)); //返回true,模式修饰符i可忽略大小写
用字面量方法表示:
var pattern = /Box/i; //字面量方法创建正则表达式
var str = 'box';
alert(pattern.test(str));
可以用一句话来代表这三行代码:
alert(/Box/i.test('box')); //返回true
这里有一个疑问,单纯的比较两个字符串是否相等完全可以用如下代码来判断:
var str1 = 'box';
var str2 = 'box';
alert(str1 == str2);
那么为什么要用正则表达式呢?再看下面代码:
var pattern = /Box/i;
var str = 'This is a box'; //一句英文
alert(pattern.test(str)); //字符串中是否包含模式中的正则表达式,This is a box中是否包含不区分大小写的Box,正则表达式更多的 //是一种包含关系
exec()用法如下:
var pattern = /Box/i;
var str = 'box';
alert(pattern.exec(str)); //返回的是数组,有就返回数组的值,这里为box,数据类型是object,没有则返回nullalert(typeof pattern.exec(str)); //返回object 用typeof来输出数据类型var pattern = /Box/i;
var str = 'apple';
alert(pattern.exec(str)); //不匹配,返回null

被折叠的 条评论
为什么被折叠?



