正则表达式
1、表单验证、过滤敏感词
2、语法:
①定义规则
const 规则名=/表达式/
②查找
test()用来查看正则表达式与指定的字符串是否匹配
定义的规则名.test(被检测的字符串)
const rule = /你好/
const str = '你好,今天你吃饭了吗,睡觉了吗,打喷嚏了吗,想我了吗'
console.log(rule.test(str));//匹配返回true,否则返回false
③检索(查找)符合规则的字符串(了解就行)
exec()在一个指定字符串中执行一个搜索匹配
const rule = /你好/
const str = '你好,今天你吃饭了吗,睡觉了吗,打喷嚏了吗,想我了吗'
console.log(rule.exec(str));//匹配返回的是数组
元字符
1、特殊的字符
2、分类:边界符、量词、字符类
①边界符
^表示匹配行首的文本(以谁开始)
$表示匹配行尾的文本(以谁结束)
console.log(/^哈/.test('哈哈'))//true,因为定义规则是以哈开头
console.log(/^哈/.test('二哈'))//false,因为定义规则是以哈开头,而测试的字符串不是
console.log(/^哈$/.test('哈哈'))//false,因为是精确匹配,只能出现一个哈才算正确
②量词:用来设定某个模式出现的次数
console.log(/^哈*$/.test(''))//true,出现0个哈,匹配
console.log(/^哈*$/.test('哈哈'))//true重复出现2次
console.log(/^哈*$/.test('哈二哈'))//false,只能出现哈,不能出现其他
console.log('*****************************')
console.log(/^哈+$/.test(''))//false ,出现0个哈,不匹配,要大于1
console.log(/^哈*$/.test('哈哈'))//true重复出现2次
console.log(/^哈*$/.test('哈二哈'))//false,只能出现哈,不能出现其他
console.log('*****************************')
console.log(/^哈?$/.test(''))//true,出现0个哈,匹配
console.log(/^哈?$/.test('哈哈'))//true重复出现2次
console.log(/^哈?$/.test('哈二哈'))//false,只能出现哈,不能出现其他
量词{n}写几,就必须出现几次
console.log(/^哈{4}$/.test('哈哈'))//false,因为不能超过4次
console.log(/^哈{4}$/.test('哈哈哈哈'))//true,出现四次
console.log(/^哈{4}$/.test('哈哈哈哈哈'))//true,可以超过四次
console.log('*****************************')
量词{n,}写几,就意味着出现的次数为大于等于n,逗号两边不能有空格
console.log(/^哈{4}$/.test('哈哈'))//false,因为不能超过4次
console.log(/^哈{4}$/.test('哈哈哈哈'))//true,出现四次
console.log(/^哈{4}$/.test('哈哈哈哈哈'))//true,可以超过四次
console.log('*****************************')
量词{n,m},就意味着出现的次数大于等于n,小于等于m
console.log(/^哈{4,6}$/.test('哈哈哈哈'))//true
console.log(/^哈{4,6}$/.test('哈哈哈哈'))//true,出现5次
console.log(/^哈{4,6}$/.test('哈哈哈哈哈哈哈哈哈'))//false,因为超过6次
console.log('*****************************')
③字符类
[abc]只要匹配的字符串匹配abc里面其中一个就行,如果是精确匹配的话只选一个,匹配小写字母[a-z],匹配大写字母[A-Z],匹配数字[0-9],
console.log(/^[abc]$/.test('a'));//true
console.log(/^[abc]$/.test('abc'));//false,精确匹配,只匹配一个
console.log(/[abc]/.test('apple boy cat '));//不是精确匹配,可以匹配多个
console.log(/^[abc]{3}$/.test('abc'));//true,指定可以重复个数
console.log(/^[a-z0-9A-Z]{3}$/.test('a2A'))//true,只能输入字母和数字
[^a-z],在中括号里面添加^,代表取反,除了小写字母之外的
3、修饰符
const str = '学习java,学完java一生幸福'
const re = str.replace(/java/i, '前端')//只会找到第一个匹配的,学习前端,学完java一生幸福
console.log(re);
const res = str.replace(/java/g, '前端')//找到全部匹配的,学习前端,学完前端一生幸福