正则

128 阅读2分钟

正则表达式是用于匹配字符串中字符组合的模式,也是对象

一,正则表达式有什么作用

​ 1,表单验证(匹配)

​ 2,过滤敏感词(替换)

​ 3,字符串中提取我们想要的部分(提取)

二,语法

​ 1,定义规则

​ 2,查找

三,定义正则表达式语法

let 变量名 = /表达式/

​ 其中/ / 是正则表达式字面量

四,判断是否有符合规则的字符串

​ test()方法 //用来查看正则表达式与指定的字符串是否匹配

​ 语法:

regObj.test(被检测的字符串)

​ 返回结果为布尔值

let obj = /前端/
console.log(obj.test('我们都在学前端')) //返回true

五,检索(查找)符合规则的字符串

​ exec()方法 //在一个指定字符串中执行一个搜索匹配

​ 语法:

regObj.exec(被检测的字符串)

​ 匹配成功,返回一个数组,否则返回null

let obj = /前端/
console.log(obj.exec('我们都在学前端'))

六,元字符

​ 具有一些特殊含义的字符,元字符进行分类:

​ 1,边界符(表示位置,开头和结尾,必须用什么开头,什么结尾)

​ 2,量词(表示重复次数)

​ 3,字符类(比如\d表示0-9)

一,边界符

​ ^ 表示匹配行首的文本(以谁开始)

​ $ 表示匹配行尾的文本(以谁结束)

console.log(/^哈/.test('哈哈'))  //true
console.log(/哈$/.test('你哈'))  //true
console.log(/^哈$/.test('哈哈')) //false
console.log(/^哈$/.test('哈'))   //true
二,量词

​ 设定某个模式出现的次数

1655043106436

//量词 n>=0
console.log(/a*/.test('aa'))  //true
console.log(/a*/.test(''))    //true
console.log(/a*/.test('a'))   //true
// 量词n>=1
console.log(/a+/.test('a'))   //true
console.log(/a+/.test('aa'))   //true
console.log(/a+/.test(''))   //false
// 量词0||1
console.log(/^a?$/.test('a'))   //true
console.log(/^a?$/.test(''))   //true
console.log(/^a?$/.test('aa'))   //false
// 只能出现n次
console.log(/^a{3}$/.test('a'))   //false
console.log(/^a{3}$/.test('aaa'))   //true
console.log(/^a{3}$/.test('aa'))   //false
// >=n
console.log(/^a{3,}$/.test('a'))   //false
console.log(/^a{3,}$/.test('aaa'))   //true
console.log(/^a{3,}$/.test('aaaa'))   //true
// >=n <=m
console.log(/^a{3,6}$/.test('a'))   //false
console.log(/^a{3,6}$/.test('aaa'))   //true
console.log(/^a{3,6}$/.test('aaaaaaa')) //false
console.log(/^a{3,6}$/.test('aaaaa'))   //true
三,字符类

​ 1,在[ ]里加上-连字符

​ 比如:

​ [A-Z]表示A到Z 26个英文字母都可以

​ [a-zA-Z]表示大小写都可以

​ [0-9]表示0-9的数字都可以

2,在[ ]里面加上^取反符号

​ 比如:

[^a-z]匹配除了小写字母以外的字符

3, .匹配除换行符之外的任何单个字符

4,预定义:某些常见模式的简写方式

1655092220430

四,修饰符

修饰符约束正则执行的某些细节行为,如是否区分大小写

语法:

/表达式/修饰符

i是单词ignore的缩写,正则匹配不区分大小写

console.log(/a/i.test('a'))

g是单词global的缩写,正则匹配所有满足正则表达式的结果

console.log(/a/g.test('a'))
五,replace替换
字符串.replace(/正则表达式/'替换的文本')
let text = document.querySelector('textarea')
let button = document.querySelector('button')
let div = document.querySelector('div')
button.addEventListener('click',function(){
    div.innerHTML =text.value.replace(/激情|基情/g,'**')
})

案例

匹配style内容和js内容

const regStyle = /<style>[\s\S]*<\/style>/
const regScript = /<script>[\s\S]*<\/script>/