正则表达式出现情况
假设用户需要在HTML表单中填写姓名、地址、出生日期等。那么在将表单提交到服务器进一步处理前,JavaScript程序会检查表单以确认用户确实输入了信息并且这些信息是符合要求的。
一.什么是正则表达式
正则表达式(regularexpression)是一个描述字符模式的对象。ECMAScript的RegExp类表示正则表达式,而String和RegExp都定义了使用正则表达式进行强大的模式匹配和文本检索与替换的函数。
正则表达式主要用来验证客户端的输入数据。用户填写完表单单击按钮之后,表单就会被发送到服务器,在服务器端通常会用PHP、ASP.NET等服务器脚本对其进行进一步处理。因为客户端验证,可以节约大量的服务器端的系统资源,并且提供更好的用户体验。
正则表达式
一个正则表达式是由普通字符(如a~z)以及特殊字符(称为元字符)组成的模式字符串。
该模式字符串描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
1、字符类
2、量词
3、指定匹配位置
4、使用选择匹配符
正则表达式的选择匹配符只有一个"|",使用"|"可以匹配指定的多个选项中的任意一项。
例如/World|Dream/可以匹配"One World One Dream"中的World或者Dream
5、分组
分组就是使用小括号将多个单独的字符或字符类组合成子表达式,以便可以像处理一个独立的单元那样,用"|"、"*"、"+"或者"?"等来处理他们。比如/J(ava)?Script/可以匹配JavaScript,也可以匹配JScript
正则表达式的创建
1、通过RegExp类的构造方法创建
\d{3}
语法格式:new RegExp(pattern[,flags])
pattern:必选参数,用于指定需要进行匹配的模式字符串。
flags:可选参数,用于指定正则表达式的标志信息。
g:全局标志。如果设置了该标志,对于某个文本执行搜索或者替换时,将对文本中的所有匹配部分起作用,否则仅搜索或替换第一次匹配的内容。
i:忽略大小写标志。
m:多行标志。如果不设置这个标志,那么^只能匹配字符串的开头,$只能匹配字符串的结尾;如果设置了这个标志,那么^可以匹配多行字符串的每一行的开头,$可以匹配多行字符串的每一行的结尾。
var objExp=new RegExp("\\d",g);
正则表达式的创建
2、通过正则表达式字面量创建RegExp对象
正则表达式字面量由两条斜线//中间加入模式匹配字符串组成。如果还要指定标志信息,则在最后的斜线/后面加上标志信息,比如g或者i.
var objExp=/\d/g;
正则表达式的使用
3、使用test()方法进行模式匹配
test()方法用于对一个指定的字符串执行模式匹配,如果搜索到匹配的字符,返回true,否则返回false
var objExp=/\d/g;
objExp.test("abc");
正则表达式的使用
4、使用exec()方法进行模式匹配
exec()方法返回值不是true或者false,而是当没有搜索到匹配的字符时,返回null,
否则返回一个数组,这个数组的第一个元素包含与正则表达式相匹配的字符串,其他元素包含的是匹配的各个分组(用括号括起来的子表达式)
语法格式:
regExp.exec(str)
身份证案例
function f(){
varzhi=ff.t01.value;
varv=/(\d{6})(\d{8})(\d{4})/;
varb=v.exec(zhi);
if(b!=null){
alert("aaa"+b[2]);
}else{
alert("不能为空");
}
}
校验邮件地址是否合法
functionIsEmail(str){
varreg=/^\w+ [a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/;
return reg.test(str);
}
if(!IsEmail(document.getElementById("email").value)){
alert("邮箱地址错误");
document.getElementById("email").focus();
returnfalse;
}