定义:是用于匹配字符串中字符组合的模式
作用:
1.表单验证(匹配)
2.过滤敏感词(替换)
3.字符串中我们想要的部分(提取)
语法:
1.定义规则
定义正则表达式语法:
var regexp= new Regexp(/表达式/);
let 变量名=/表达式/
let ny=/加油/
其中 / /是正则表达式字面量
判断是否有符合规则的字符串:
ny.test(被检测的字符串)
ny.test('请你好好加油!') //true
//返回一个boolean
2.查找
ny.exec(被检测字符串)
ny.exec('请你好好加油!') //可以的到索引号(index)
//返回的是数组,否则为null
元字符
普通字符:大多数字符仅能描述本身(例:字母和数字)
元字符(特殊字符):是一些具有特殊含义的字符,可以极大提高灵活性和强大的匹配功能(例:用户输入英文26字母,普通字符是abcdefg…,元字符则是[a-z])
元字符的分类:
1.边界符(表示位置,开始和结尾)
作用:用来提示字符所处的位置
^和$一起,表示必须式精确匹配
/^你/.test('和你') //false
/^你$/.test('和你') //false
/^你$/.test('你') //true
2.量词(表示重复的次数)
作用:用来设定某个模式出现的次数
注意:都好左右两侧千万不要出现空格
3.字符类(比如\d 表示 0~9)
[ ]匹配字符集合
//只要中括号里面的任意字符出现都返回true
console.log(/[bcfg]/.test('be')) //true
console.log(/[bcfg]/.test('ad')) //false
[ ]里面加上 - 连字符
使用连字符 - 表示一个范围
console.log(/^[a-z]$/.test('w')) //true
拓展:
//腾讯QQ
console.log(/^[1-9][0-9]{4,}$/)
//腾讯QQ从10000
//{4,}只对[0-9]生效
[ ]里面加上^取反符号
[^a-z]
//表示匹配除了小写字母之外的字符
注意:^ 符号写到中括号里面
. 匹配除换行符之外的任何单个字符
预定义:指的是某些常见模式的简写方式
举例:
日期格式:^\d{4}-\d{1,2}-\d{1,2}
// \d{4}表示在[0-9]中重复4次
// \d{1,2}表示在[0-9]之间重复1或者2次 比如输出1或者12
// 格式为:xxxx-xx-xx或者是xxxx-x-x
4.修饰符
作用:修饰符约束正则执行的某些细节行为(是否区分大小写,是否支持多行匹配)
语法:
/表达式/修饰符
i 是单词ignore的缩写,正则匹配时字母不区分大小写
g是单词global的缩写,匹配所有满足正则表达式的结果
/a/i.test('a') //true
/a/i.test('A') //true
替换 replace(可以用于敏感词替换)
语法:字符串.replace(/正则表达式/,'替换文本')
实例:
'请大家认真学习,时刻保持激情,激情是我们学习的动力'.replace(/激情/g,'**')
//可以替换为《请大家认真学习,时刻保持**,**是我们学习的动力》
//倘若有多个敏感词,可以使用格式 /敏感词1|敏感词2/
拓展
括号总结
1.大括号{}:量词符,里面表示重复次数
2.中括号[ ]:字符集合,匹配方括号中的任意字符
3.小括号():表示优先级
/^abc${2}/.test('abcc')
/^(abc)${2}/.test('abcabc')