一、正则表达式
正则表达式是规则,是让计算机能够读懂的人类制定的规则
二、量词
* |
匹配前面的子表达式任意次。例如,zo*能匹配“z”,也能匹配“zo”以及“zoo”。*等价于{0,}。 |
+ |
匹配前面的子表达式一次或多次(大于等于1次)。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。 |
? |
匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“do”或“does”。?等价于{0,1}。 |
{n} |
n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。 |
{n,} |
n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。 |
{n,m} |
m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的前三个o为一组,后三个o为一组。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。 |
三、正则表达式在javascript中的声明
1.var 名称=/规则/;
2.var reg =new RegExp("规则");
g===>global 全局,
i===>ignore 忽略大小写
范围:
\d <=> [0-9]
[范围]===》[a-z] [A-Za-z] ,[13579] [1-37-9]
[^范围] ====》不在范围内的 [^2-6]
| x|y == [xy]
()===>整体 1(3\d)|(8[13589])|(7[136])
实例:
1.判断输入的电脑号码是否正确
电话号码:<input type="text" name="tel" id="mytel" required="required"
placeholder="请输入电话号码" pattern="^(\+86)?1((3[0-9])|(5[0-9])|(7[135-8])|(8[0-35-9])|(9[17]))\d{8}$"/>
/*分析
1. +86可以出现一次或0次
2.号段:13[0-9],15[0-9],166,17[135-8],18[0-35-9],19[17]
3.\d{8}
/*
2.判断邮箱是否输入正确
分析:
1.开头:[A-Za-z0-9]{5,16}
2.必须包含的符号:@
3.@后面跟的字符:[a-z0-9]{2,5}
4.(.com|.cn)
邮箱:<input type="email" id="mail" name="mail" required="required" placeholder="请输入邮箱"
pattern="^[A-Za-z0-9]{5,16}@[a-z0-9]{2,5}\.((com)|(cn))$" title="请输入正确的邮箱"
/>
3.判断是否为非负整数
<input type="text" pattern="^0|[1-9]\d*$" />
4.判断是否为整数
<input type="text" pattern="^-?([1-9]\d*)|0$"/>
5.var str1="w34r384hugw949843hg37rdfhasi723hhiay29";从这个字符串中匹配出所有数字。
str1.match(/\d+/g);
匹配所有字符:
str1.match(/[a-zA-Z]+/g);
6. 给定任意字符串,统计字符串中,每个字符以及每个字符出现的次数,例如例如:var str1="aaaabbbbbccddd";
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> </body> <script type="text/javascript"> //1. 给定任意字符串,统计字符串中,每个字符以及每个字符出现的次数 // 例如:var str1="aaaabbbbbccddd"; b,5 var str1="aaaaabbbbbccdddeee"; var result=[]; while(str1!=""){ //获取第一个字符 var fchar=str1[0]; //创建正则表达式对象 var reg=new RegExp(fchar,"g"); //替换 字符串中,符合的 字符 var res=str1.replace(reg,""); // 第一个字符在原字符串中出现的次数 var len=str1.length-res.length; var obj={}; obj.ch=fchar; obj.count=len; result.push(obj); //把替换后的字符串,赋值给 str1 这个变量 str1=res; } for(var i=0;i<result.length;i++){ document.write(result[i].ch+":"+result[i].count+"次"); document.write("<br>"); } </script> </html>
7.求100~10000以内的“回文数”
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <script type="text/javascript"> for(var i=100;i<10000;i++){ var str=i.toString(); var arr= str.match(/\d/g); if(i<1000 && arr[0]==arr[2]){ document.write(i); document.write("<br>"); } else if(arr[0]==arr[3] && arr[1]==arr[2]) { document.write(i); document.write("<br>"); } } </script> </body> </html>
8.验证输入的邮箱是否正确
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> </head> <body> js验证邮箱: <input type="text" id="input1" /> <input type="button" id="btn1" value="验证"/> </body> <script type="text/javascript"> //var btn=document.getElementById("btn1"); var btn =document.getElementById("input1"); btn.onblur=function(){ // var obj=document.getElementById("input1"); var str=this.value; // var reg=new RegExp(); var reg = /^[a-zA-Z0-9]{6,11}@(sina\.cn|126\.com|163\.com|qq\.com)$/; if(reg.test(str)){ alert("通过"); } else{ this.style.border="1px solid red"; alert("输入有误"); } }; var dd=document.getElementById("input1"); dd.onfocus=function(){ this.style.border="none"; } </script> </html>