过滤敏感词及正则表达式
使用正则表达式筛选出要过滤的词,使用replace替换掉。
let textarea = document.querySelector("textarea");
let btn = document.querySelector("button");
let p = document.querySelector("p");
let reg = /傻子|坏蛋/g; //全局过滤词
btn.addEventListener('click', function() {
var text = textarea.value.replace(reg, '*') //把敏感词替换成*
p.innerText = text;
})
正则表达式
一、创建与检测
1.利用RegExp对象创建。2.利用字面量创建。3.test方法检测字符串是否符合正则表达式要求规范。
var regexp=new RegExp(/123/);//1.利用RegExp对象创建 不加引号
var re=/456/;//2.利用字面量创建
console.log(re.test(123456));//true 3.
二、字符类
[ ]表示有一系列字符可供选择,只要匹配其中一个就可以了。
量词 | 说明 |
---|---|
* | 重复0次或更多次 |
+ | 重复一次或更多次 |
? | 重复0次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
边界符 | 说明 |
---|---|
^ | 表示匹配行首的文本(以谁开始) |
$ | 表示匹配行尾的文本(以谁结束) |
/^abc$/ | 精确匹配,必须是abc |
var re=/^a+$/;//一次以上
console.log(re.test('aaaa'));
var re=/^a?$/;//0或1次
console.log(re.test('a'));
console.log(re.test(''));
var re=/^a{3,}$/;//大于等于3
console.log(re.test('aaaaaa'));
var re=/^a{3,5}$/;//3到5
三、括号总结
- 大括号 量词符 里面表示重复次数
- 中括号 字符集合 匹配方括号中的任意字符
- 小括号 表示优先级
四、预定义类(简写方式)
预定类 | 说明 |
---|---|
\d | 匹配0-9之间的任一数字,相对于[0-9] |
\D | 匹配所有0-9以外的字符,相对于[^0-9] |
\w | 匹配任意的字母,数字和下划线,相当于[A-Za-z0-9] |
\W | 除所有字母,数字和下划线以外的字符,相当于[^A-Za-z0-9] |
\s | 匹配空格(包括换行符,制表符,空格符),相当于[\t\r\n\v\f] |
\S | 匹配非空格字符 |
var re=/^\d(3,4)-\d(7,8)$/;//010-12345678 0530-1234567
正则里面的或者 符号 |
表单验证
var uname=document.querySelector('.uname');
var span=document.querySelector('span');
var re=/^[0-9]{6,11}$/;//6-11次
uname.onblur=function(){
if(re.test(this.value)){
span.innerHTML="输入的格式正确";
}else{
span.innerHTML="输入的格式不正确";}
}
正则替换
stringobject.replace(regexp/substr,repalcement)
- 第一个参数:被替换的字符串或者正则表达式
- 第二个参数:被替换的字符串
- 返回值是一个替换完毕的新的字符串
div.innerHTML= text.value.replace(/傻子/,'***');//替换
div.innerHTML= text.value.replace(/傻子/g,'***');//替换
g:全局匹配,i:忽略大小写 ,gi:全局匹配+忽略大小写