ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

正则表达式

2022-05-21 08:31:16  阅读:157  来源: 互联网

标签:const log 匹配 正则表达式 test console reg


介绍

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

作用:

  • 表单验证(匹配
  • 过滤敏感词(替换
  • 字符串中提取我们想要的部分(提取

使用

定义/创建正则表达式

  1. 字面量创建

    语法:const 变量名 = /表达式/

    //是否包含'123'字符
    const reg = /123/
    
  2. 构造函数创建

    语法:const 变量名 = new RegExp(/表达式/)

    const reg = new RegExp(/123/)
    

检测查找是否匹配

test() 方法

语法:正则变量名.test(被检测字符串)

作用:查看正则表达式与指定的字符串是否匹配

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

console.log(reg.test('123asda123s'))

exec() 方法

语法:正则变量名.exec(被检测字符串)

作用:在一个指定字符串中执行一个搜索匹配

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

console.log(reg.exec('123asda123s'))

正则表达式检测查找 test方法和exec方法区别:

  • test方法 用于判断是否有符合规则的字符串,返回的是布尔值 找到返回true,否则false
  • exec方法用于检索(查找)符合规则的字符串,找到返回数组,否则为 null

元字符

概念:

元字符:是一些具有特殊含义的字符,可以极大提高了灵活性和强大的匹配功能

分类

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

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

  • ^:表示匹配行首的文本(以xxx为开头

  • $:表示匹配行尾的文本(*以xxx为结尾)

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

    // ^:以xxx为开头

    // const reg = /^abc///以abc为开头(以a为开头,后面跟bc)

    // const re = reg.test('abc12312ds')

    // console.log(re)

    // $:以XXX为结尾

    //   const reg = /abc$///以abc为结尾(以c为结尾,前面是ab)

    //  console.log(reg.test('abc12312abc'))
    //  console.log(reg.test('abc12312ABC'))
    //  console.log(reg.test('abc12312abca'))

    //  ^,$精确匹配
    // 以a为开头,以c为结尾,中间只能是b 
    const reg = /^abc$/
    console.log(reg.test('abcabc'))//false
    console.log(reg.test('abc12312abc'))//false
    console.log(reg.test('abc'))//true

量词 (表示重复次数)

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

  • *表示重复 0 次或多次

    // a开头,a结尾,中间为a,a的个数可以为0
        const reg = /^a*$/
    
        console.log(reg.test(''))//t
        console.log(reg.test('a'))//t
        console.log(reg.test('aa'))//t
        console.log(reg.test('aaa'))//t
        console.log(reg.test('A'))//f
        console.log(reg.test('ab'))//f
    
  • + 表示重复至少 1 次

        const reg = /^a+$/
        console.log(reg.test(''))//f
        console.log(reg.test('a'))//t
        console.log(reg.test('aa'))//t
        console.log(reg.test('aaa'))//t
        console.log(reg.test('n'))//f
        console.log(reg.test('A'))//f
        console.log(reg.test('ab'))//f
    
  • ? 表示重复 0 次或1次

        const reg = /^a?$/
    
        console.log(reg.test(''))//t
        console.log(reg.test('a'))//t
        console.log(reg.test('aa'))//f
        console.log(reg.test('n'))//f
        console.log(reg.test('A'))//f
        console.log(reg.test('ab'))//f
    
  • {m} 表示复 m 次

  • {m, } 表示复 m 次或大于m次

  • {m, n} 表示复 m 到 n 次

    //const reg = /^a{3}$/
   // const reg = /^a{3,}$/
    const reg = /^a{3,5}$/
    
    console.log(reg.test(''))//f
    console.log(reg.test('a'))//f
    console.log(reg.test('aa'))//f
    console.log(reg.test('aaa'))//t
    console.log(reg.test('aaaaa'))
    console.log(reg.test('aaaaaaaa'))
    console.log(reg.test('n'))//f
    console.log(reg.test('Aaaaaa'))//f
    console.log(reg.test('aaaab'))//f

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

[ ] 匹配字符集合

后面的字符串只要包含 abc 中任意一个字符,都返回 true 。

//[abc]:匹配其中的一个,a,b,c
const reg = /^[abc]$/
console.log(reg.test('a'))
console.log(reg.test('b'))
console.log(reg.test('c'))

[ ] 里面加上 - 连字符

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

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

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

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

        // 匹配a到z其中之一
        // const reg = /^[a-z]$/
    
        // 匹配a到z,A到Z其中之一
        // const reg = /^[a-zA-Z]$/
    
         // 匹配a到z,A到Z,0到9其中之一
        //  const reg = /^[a-zA-Z0-9]$/
    
        //  中杠放在最后,表示字符,放在字符串中间代表:中杠的前一个字符到中杠的后一个字符
        const reg = /^[a-zA-Z0-9_-]$/
    
        console.log(reg.test('i'))
        console.log(reg.test('I'))
        console.log(reg.test('ab'))
        console.log(reg.test('6'))
        console.log(reg.test('_'))
        console.log(reg.test('-'))
    

其他元字符

取反:^

[ ] 里面加上 ^ 取反符号,表示除了匹配中括号内字符的其他单个字符

注意要写到中括号里面

    // 不匹配[a-zA-Z0-9]的其他单字符
    const reg = /^[^a-zA-Z0-9]$/
//f
    console.log(reg.test('6'))//f
    console.log(reg.test('*'))//t
    console.log(reg.test('!'))//t
    console.log(reg.test('ab'))//f

除了\n以外的任一个单字符:.

    const reg = /^.$/

    console.log(reg.test('m'))//t
    console.log(reg.test('M'))//t
    console.log(reg.test('6'))//t
    console.log(reg.test('*'))//t
    console.log(reg.test('@'))//t
    console.log(reg.test('#'))//t
    console.log(reg.test('ab'))//f
    console.log(reg.test('\n'))//f

任一个字符:(字符1|字符2|字符3)

    const reg = /^(张三丰|刘德华|张无忌)$/

    console.log(reg.test('张三丰'))//t
    console.log(reg.test('刘德华'))//t
    console.log(reg.test('张无忌'))//t
    console.log(reg.test('小明'))//f

匹配任意单字符

const reg = /^(.|\n)$/
    console.log(reg.test('m'))//t
    console.log(reg.test('M'))//t
    console.log(reg.test('6'))//t
    console.log(reg.test('*'))//t
    console.log(reg.test('@'))//t
    console.log(reg.test('#'))//t
    console.log(reg.test('\n'))//t

注意

中括号:具有转义含义,特殊字符在[]里只是普通字符

const reg = /^(张三丰|刘德华|张无忌)$/:含义匹配:张三丰 或 刘德华 或 张无忌

const reg = /[1]$/:含义匹配:张,三,丰,|,刘,德,华,|,张,无,忌 任意一个字符

预定义

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

预定类 说明
\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 匹配非空格的字符,相当于[^\t\r\n\v\f]

修饰符

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

语法:/表达式/修饰符

  • i是单词 ignore 的缩写,正则匹配时字母不区分大小写
  • g 是单词 global 的缩写,匹配所有满足正则表达式的结果
let str = 'asdsaAFSSHdsfs'
    // replace:替换字符串,仅第一个替换
    // str.replace('旧','新')

    // str = str.replace('s','*')
    str = str.replace(/s/gi,'*')
    console.log(str)

  1. 张三丰|刘德华|张无忌 ↩︎

标签:const,log,匹配,正则表达式,test,console,reg
来源: https://www.cnblogs.com/yyshow/p/16294363.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有