假设用户需要在HTML表单中填写数据,在提交表单数据到服务器验证处理之前,JavaScript程序会检查表单以确认是否输入了数据信息并且这些信息是否符合要求。
1、正则表达式
Regular expression,是一个描述字符模式的对象。ECMAScript的RegExp类表示正则表达式,RegExp和String定义了使用正则表达式进行强大的模式匹配和文本检索与替换的函数。正则表达式主要用来验证客户端的输入数据,用户填写完表单点击提交按钮之后,表单会被发送到服务器,在服务器端常会使用PHP、ASP.NET等服务器脚本对其进行进一步处理。正因为有了正则表达式可以在客户端验证表单,所以可节约大量的服务器端的系统资源,并且减少等待时间提供更好的用户体验。
创建正则表达式有两种方式,(1)new运算符、(2)字面量方式
(1)new运算符
var test = new RegExp("test"); //第一个参数字符串
var test = new RegExp("test","ig") //第二个参数可选模式修饰符
其中,模式修饰符的可选参数有:参数 i ,含义忽略大小写;参数 g,含义全局匹配;参数 m,多行匹配。
(2)字面量方式
var test = /test/;
var test = /test/ig;
2、测试正则表达式
RegExp对象中包含两个用于测试字符串匹配的两个方式:test()和exec(),功能基本相似。
(1) test()方法在字符串中查找是否存在指定的正则表达式并返回布尔值,如果存在则返回true,不存在则返回false。
/*使用new运算符的test方法示例*/
var demo=new RegExp("e");
document.write(demo.test("The best things in life are free"));//返回true
(2) exec()方法也用于在字符串中查找指定正则表达式,如果exec()方法执行成功,则返回包含该查找字符串的相关信息数组。如果执行失败,则返回null。
/*使用字面量方式的exce方法示例*/
var demo = /e/; //创建正则模式,不区分大小写
var str = 'The best things in life are free';//创建要比对的字符串
alert(demo.exec(str)); //通过exce()方法验证是否匹配,返回e
3、String的正则表达式方法
除了test()和exec()方法,String对象也提供了4个使用正则表达式的方法。
String对象中的正则表达式方法
方 法 | 含 义 |
match(pattern) | 返回pattern中的子串或null |
replace(pattern, replacement) | 用replacement替换pattern |
search(pattern) | 返回字符串中pattern开始位置 |
split(pattern) | 返回字符串按指定pattern拆分的数组 |
(1) 使用match方法获取获取匹配数组
var pattern = /e/ig; //忽略大小写、全局搜索
var str = 'The best things in life are free';
alert(str.match(pattern)); //匹配到6个e,返回e,e,e,e,e,e
(2) 使用search来查找匹配数据
var pattern = /s/;
var str = 'The best things in life are free';
alert(str.search(pattern)); //查找到返回位置,返回6,空格也算一个位置,否则返回-1
note:因为search方法查找到即返回,也就是说无需g全局
(3) 使用replace替换匹配到的数据
var pattern = /free/ig;
var str = 'The best things in life are free';
alert(str.replace(pattern, 'learning')); //将free替换成了learning
(4) 使用split拆分成字符串数组
var pattern = / /ig;
var str = 'The best things in life are free';
alert(str.split(pattern,3));//将空格拆开分组成数组,返回结果The,best,things