1.关于正则表达式
处理字符串时,有很多较为复杂的字符串用普通的字符串处理函数无法干净的完成。比如说,可能需要验证一个Email地址是否合法,为此需要查看许多不容易检查的规则。这正是正则表达式的用武之地。正则表达式是功能强大而简明的字符组,其中可以包含大量的逻辑,特别值得一提的是正则表达式相当简短。
2.正则表达式的用处
测试用户名(必须由字母数字下划线组成)
户密码(必须同时包含大写小写数字)
确认密码
3.创建一个RegExp对象
创建RegExp对象实例的两种方式:
(1)构造函数方式 var reg=new RegExp(“表达式”,“附加参数”);
(2)普通方式 var reg=/表达式/附加参数
附加参数是可选的,用来扩展正则表达式的含义,主要有三个参数: (1)g:全局匹配。 (2)i:用作忽略大小写的参数。 (3)m:多行匹配。
例如:
//第一种
var reg=new RegExp("老罗","g");
//第二种
var reg1=/老罗/g;
4.正则表达式语法(perl风格)
Perl语言的正则表达式已经非常成熟,javascript直接拿来使用。
格式 /javascript/ 在字符串前后分别加一个斜杠
匹配函数
正则.exec(str) 匹配返回内容,否则返回null。 exec(str): exec方法使用RegExp对象实例创建时指定的正则表达式模式搜索字符串,并返回一个包含搜索结果的数组。
正则.test(str) 匹配返回true,否则返回false。 test(str): 该方法检查一个字符串中是否存在创建RegExp对象实例时所指定的正则表达式模式,如果存在则返回true,否则返回false。
例如:
//exrc()方法 如果匹配成功返回搜索内容,否则 返回null
alert(reg1.exec(str));
//text()方法 如果匹配成功 返回true, 否则 返回false
alert(reg.test(str));
5.正则表达式的元素
正则表达式包括三种元素分别为:量词、元字符和修饰符
量词:


元字符:


修饰符:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script type="text/javascript">
//量词
// + 匹配至少一个或多个前导字符
// var str1='phwhphhhhhhhwhhh';
// var reg1=/hw+h/g;//h和h之间至少有一个或多个w的字符
// var reg1=/ph+/g;//一个p和一个或多个h在一块的字符
// var reg1=/wh+/g;//一个w和一个或多个h在一块的字符
// var reg1=/h+/g;//一个或多个h在一块的字符
// alert(str1.replace(reg1,'0'));
// * 匹配至少0个或多个前导字符
// var str2="luo";
// var reg2=/l*/g;//..u.o. 前引号后引号也算0个
// alert(str2.replace(reg2,'.'));
// var str3='phhhhhhhhp';
// var reg3=/wh*p/g;//找不到
// alert(str3.replace(reg3,'0'))
// ? 匹配至少0个或1个前导字符
// var str4='hello,wolhld';
// var reg4=/he?/g;//一个h后面跟0个或一个e
// alert(str4.replace(reg4,'0'));
// . 通配符
// var str5='zhangsanzhangsan';
//// var reg5=/./;//0hangsanzhangsan
//// var reg5=/./g;//0000000000000000
// var reg5=/zh.ng.an/;//0zhangsan
// alert(str5.replace(reg5,'0'))
// {X}匹配x个前导字符
// var str5 = "wwwhhhhaaattt";
// var reg5 = /h{3}/g;
// alert(str5.replace(reg5,"#"));
//
// var str6 = "wwwhhhhhhhaaattt";
// var reg6 = /h{3,4}/g;
// alert(str6.replace(reg6,"#"));
//
// var str7 = "wwwhhhaaattt";
// var reg7 = /h{3,}/g;
// alert(str7.replace(reg7,"#"));
//
// var str8 = "1219539627@163.com";
// var reg8 = /^w{4,10}@163.(com|cn)$/g;
// alert(str8.replace(reg8,"#"));
//$结尾
// var str9 = "what are you doing";
// var reg9 = /doing$/;
// alert(str9.replace(reg9,"#"));
//
// var str10 = "what";
// var reg10 = /^what$/g;//^开头
// alert(str10.replace(reg10,"#"));
//
// var str11 = "aAbcdef";
// var reg11 = /[a-z]/g;
// alert(str11.replace(reg11,"#"));
//匹配手机号
//var cellphone = "15215212345";
//var regNum = /^1[0-9]{10}$/;
//alert(regNum.test(cellphone));
//元字符
//var str12 = "adebfc";
//var reg12 = /[^abc]/g;
//alert(str12.replace(reg12,"#"));
//var str13 = "a d ,";
//var reg13 = /S/g;//查找非空白字符。
//alert(str13.replace(reg13,"#"));
//
//var str14 = "aaaaaa";
//var reg14 = /B/g;//匹配非单词边界。
//alert(str14.replace(reg14,"#"));
//匹配邮箱
// var email = "123456@qq.com";
// var email1 = "123456df";
// var email2 = "123456asfsdf";
// var email3 = "12345sdfsdf";
// var regE = /^w{4,16}@(qq|163|139).(com|cn)$/;
// alert(regE.test(email));
</script>
</body>
</html>