一,正则表达式:
Js中的一种对象,一般用来验证用户输入的字段是否符合一定的规则,比如提交密码认证时输入的密码具有某种规范-(既有字母,又有数字,还有特殊符号)
二,正则表达式的创建:
字面量创建方式:
var reg=/\./ig //i--->大小写不敏感,g---->全局匹配,m--->多行匹配
new RegExp()函数创建:new RegExp()函数创建:
var reg=new RegExp("huangshang","igm") //另一种方法,第一个参数为正则表达式,第二个参数为匹配的限制
var reg=re.test(re2) //re2中有没有re(正则调用)
三,写法举例
var reg=/[a-c][a-c]/ //找出符合规则的子串(第一位a-c,第二位a-z)
var reg=/^a/ //以a字符开头的字符串
var reg=/a$/ //以a字符结尾的字符串
var reg=/[abc]/ //包含abc中的任意一个字符匹配的字符串
var reg=/\.(jpg|png)$/ //.jpg或者.png结尾的字符串
var reg=/[^a]/ //^放在[ ]里面表示非
var reg=/([a-z])\1/gi; //反斜杠,"\num" 反向引用--括号
var reg1=/([a-z0-9])([a-z0-9])\1\2/gi //XYXY型
str1.replace(reg1,"$1$1$2$2") //将匹配得到的XYXY类型的字符串,替换为XXYY 类型
四,关于正则表达式的方法
正则表达式.test(字符串变量) //字符串变量中是否有正则表达式,返回值为布尔值
正则表达式.exec(字符串变量) //字符串变量中是否有正则表达式,返回值为一个匹配成功的规则(数组))
字符串.match(正则表达式) //返回元素为匹配的正则表达式的数组
字符串.replace(表达式1,表达式2) //检索表达式1,替换为表达式2
字符串.search(正则表达式) //检索正则表达式,返回检索位置
字符串.split("分隔符") //分割字符串,参数为指定分隔符
new ReExp() //创建正则表达式
字符串.replace("被替换的",将要替换) //替换
五,元字符
\s //代表一个空白字符
\S //[space]
\w //常用(英文、数字)字符
\W //非“常用字符”,除英文和数字之外的所有字符(特殊字符)
\d //数字
\D //非数字
六,量词
var reg=/[a]{3}/ //匹配三个以上的a,[a]{startnum,endnum}代表startnum和endnum之间数目的字符串,endnum可以不要
var reg=/[a]+/ //匹配至少一个a,多个也行
var reg=/[a]*/ //匹配零个以上a
var reg=/[a]?/ //0个或1个a
var reg=/\d(?=[a-z])/ig //某个位置后面跟着特定的字符
var reg=/\d(?![a-z])/ig ////某个位置后面不跟着特定的字符
var reg=/\*/ //验证特殊字符"*"
七,正则实例属性
.source //字面量形式对应的字符串
.lastIndex //下一次匹配的下标
八,例题
//验证数字(.12,23455,+2,-1)
var str1="-50322201"
var reg1=/^((^-?([0]\.\d+$))|(^-?(\.\d+$)))|(^-?([1-9]\d*((\.\d+$)|\d*$)))/
console.log(reg1.test(str1));
// 验证格式2019-3-23
var str2="3672-09-08"
var reg2=/(^([2-9]\d\d\d)|(19[7-9][0-9]))-((0?[1-9])|(1[0-2]))-(((0?[1-9])|[1-2][0-9])|(3[0-1]))$/
console.log(reg2.test(str2));
//验证手机号
var str3="15333654427"
var reg3=/^1[3-9]\d{9}$/
console.log(reg3.test(str3));
// 验证既包含数字,又包含字母和下划线
var str4="^4_a12"
var reg4=/^(?=.*\d+)(?=.*[a-z]+)(?=.*_+).{3,}$/
console.log(reg4.test(str4));
//验证邮箱(214637@qq.com|cn)
var str5="2148_37@qq.com"
var reg5=/^\w+@\w+\.(com|cn)$/
console.log(reg5.test(str5));
//验证中文
var str6="中s大幅度da国"
var reg6=/[\u4E00-\u9FFF][\u4E00-\u9FFF]/
console.log(reg6.test(str6));
// 字符串去重
var str7="agrdrgjgAfe";
var reg7=/([\w\W])(?=.*\1+)/g;//加括号才能显现出来,不加括号不行
console.log(str7.match(reg7));
//将查找出来的字符替换成空字符串"",则完成字符串的去重
console.log(str7.replace(reg7,""));
九,笔试题
//去掉字符串的头尾空格
方法1:字符串.tirm()
方法2:正则表达式
var reg=/\s/g
var str=" hello"
console.log(str.match(reg))
方法3:纯js语言(for循环)
//判断重复次数或者是否存在
var str="ellods"
var re=str.indexOf("lo") //返回值为索引-匹配成功,否则返回-1
console.log(re)
字符串.match(正则) //返回一个数组或者null,数组的元素个数为重复次数