正则有什么用
- 给定的字符串是否符合正则表达式的过滤逻辑
- 通过正则表达式,从字符串中获取我们想要的特定部分
- 替换字符串满足正则表达式的字符
例如:验证邮箱、手机号、银行卡、采集器(爬虫)、中奖信息133*161屏蔽特殊词汇
test方法
test方法表示用正则去匹配字符串,如果匹配成功返回true,否则返回false
var reg = /aa/ console.log(reg.test('aa')) //true console.log(reg.test('AA')) //false, 如果要忽略大小写,规则可以这样写 reg =/aa/i //判断是一个字符串是否全是数字 var str = "111addsdsds111" // \D,只要不是数字的字符都会被\D匹配上 var reg2 = /\D/ if(reg.test(str)){ alert('不全是数字') }else{ alert('全是数字') }
search方法
search方法表示正则去匹配字符串,如果匹配成功就返回匹配成功等位置,如果匹配失败就返回-1
var str = 'abcde' //需求:查询a是否在字符串str中 console.log(str.search('a')) //需求:查找a+数字(大于等于1)是否存在字符串中 var reg = /a\d+/ var str2 = 'ascda2132ve' console.log(str2.search(reg))
match方法
match方法表示正则去匹配字符串,如果匹配成功就返回匹配成功的数组,如果匹配不成功就返回null
//match 匹配上就返回内容,匹配不上就返回null var str = "222ddd33aa11cc" //g 表示全局匹配, i表示忽略大小写 var reg = /\d/g var res = str.match(reg) console.log(res)
replace方法
replace表示正则去匹配字符串,匹配成功的字符串会被新的字符串替换
var str = "床前明月光" //注意:字符串不能被改变,只有返回一个新的字符串 var str2 = str.replace('明月', '太阳') console.log(str, str2) //把数字替换成xxx var str3 = "32dewfdew23w1" var reg = /\d/g //如果不加g,只会替换第一个匹配到的数字 var res = str3.replace(reg, 'xxx') console.log(res) //需求: 匹配上数字,每个数字加1,得到的结果是234567 var str4 = '123456' var reg = /\d/g //replace 第二个参数可以是一个函数, 函数执行后会有一个结果,拿这个结果去替换 var str5 = str4.replace(reg, function(s){ return Number(s) + 1 }) console.log(str5)
//敏感词过滤 //思路:把敏感词找出来 替换成** var oText1 = document.getElementById('text1') var oText2 = document.getElementById('text2') var oBtn = document.getElementById('btn1') oBtn.onclick = function(){ //金胖胖主持曹县政治局会议 研究2020年经济工作 var valueStr = oText1.value //在正则中|表示或者的意思 var reg = /金胖胖|曹县|政治局/g var str = valueStr.replace(reg, function(s){ var result = '' for(var i=0; i<s.length; i++){ result += '*' } return result }) oText2.value = str }