老己的JavaScript API笔记5

0 阅读3分钟

JavaScript API知识笔记 第五天

正则表达式

一、介绍

正则表达式(Regular Expression)是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象

通常用来查找、替换那些符合正则表达式的文本。过滤掉页面内容中的一些敏感词(替换),或从字符串中获取我们想要的特定部分(提取)(匹配)

二、语法

1.定义正则表达式语法
const 变量名=/ 表达式 /

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

eg:

const reg=/前端/

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

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

语法:

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

eg:

const str='IT,前端开发'
const reg=/前端/
console.log(reg.rest(str))//true

如果正则表达式与指定的字符串匹配 ,返回true,否则false


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

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

语法:

regObj.exec(被检测字符串)

eg:

const str='IT,前端开发'
const reg=/前端/
console.log(reg.exec(str))
//[0: "前端",groups: undefined,index: 3,input: "IT,前端开发",length: 1]

如果匹配成功,exec() 方法返回一个数组,否则返回null

三、元字符

  • 普通字符:

大多数的字符仅能够描述它们本身,这些字符称作普通字符,例如所有的字母和数字

也就是说普通字符只能够匹配字符串中与它们相同的字符

  • 元字符(特殊字符)

是一些具有特殊含义的字符,可以极大提高了灵活性和强大的匹配功能。例如[a-z]

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

正则表达式中的边界符(位置符)用来提示字符所处的位置,主要有两个字符

image.png

如果 ^ 和 $ 在一起,表示必须是精确匹配

eg:

console.log(/^二哈$/.test('二哈二哈'))//false

需要精确为仅二哈

2.量词(表示重复次数)

量词用来设定某个模式出现的次数

image.png

注意:

逗号左右两侧千万不要出现空格

3.字符类(比如 \d 表示 0~9)

(1)

[]匹配字符集合

只要出现括号内的任意一个字符,即返回true

eg:

    console.log([abc].test('andy'))//true
    console.log([abc].test('die'))//false

[ ]里面加上 - 连字符

使用连字符 - 表示一个范围

eg:

console.log(/*[a-z]$/.test('c')) //true

比如:

  • [a-z] 表示a到z 26个英文字母都可以

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

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


[ ]里面加上 ^ 取反符号

eg:

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


(2)

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

案例

用户名验证案例

需求:用户名要求用户英文字母,数字,下划线或者短横线组成,并且用户名长度为 6~16位

①:首先准备好这种正则表达式模式 /^[a-zA-Z0-9-_]{6,16}$/

②:当表单失去焦点就开始验证.

③:如果符合正则规范, 则让后面的span标签添加 right 类.

④:如果不符合正则规范, 则让后面的span标签添加 wrong 类.

const reg = /^[a-zA-Z0-9-_]{6,16}$/
    const input = document.querySelector('input')
    const sp = document.querySelector('span')
    input.addEventListener('blur', function () {
      if (reg.test(input.value)) {
        sp.innerHTML = '用户名可用'
        sp.className = 'right'
      } else {
        sp.innerHTML = '请输入6-16位数字、字母、下划线或短横线'
        sp.className = 'error'
      }
    })

(3)

预定义:指的是 某些常见模式的简写方式

image.png

四、修饰符

修饰符约束正则执行的某些细节行为,如是否区分大小写、是否支持多行匹配等

语法:

/表达式/修饰符

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

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

eg:

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

replace 替换

语法:

字符串.replace(/正则表达式/,'替换的文本')

案例

需求:要求用户不能输入敏感字

比如,pink老师上课很有**

①:用户输入内容

②:内容进行正则替换查找,找到敏感词,进行**

③:要全局替换使用修饰符 g

const text = document.querySelector('textarea')
    const button = document.querySelector('button')
    const div = document.querySelector('div')
    button.addEventListener('click', function () {
      div.innerHTML = text.value.replace(/激情/g, '**')
      text.value = ''
    })