正则表达式

正则表达式

_

一,介绍

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

通常用来查找、替换那些符合正则表达式的文本,许多语言都支持正则表达式。

  • 例如验证表单:用户名表单只能输入英文字母、数字或者下划线,昵称输入框中可以输入中文 (匹配

    比如用户名:/^[a-z20-9_-]3,16}$/

    过滤掉页面内容中的一些敏感词 (替换),或从字符串中获取我们想要的特定部分 (提取) 等。

二,语法

我们想要查找是否有戴眼镜的人,怎么做呢?

  1. 定义规则:戴眼镜的
  2. 根据规则去查找:找到则返回

正则同样道理,我们分为两步:

  1. 定义规则

  2. 查找

    比如:查找下面文本中是否包含字符串’前端‘

    let str='IT培训,前端开发培训,web前端培训,软件测试培训'
    

  1. 定义正则表达式语法:

    const 变量名 = /表达式/
    

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

    例如:

    const reg=/前端/
    
  2. 判断是否有符合规则的字符串

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

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

    举例:

    //要检测的字符串
    const str='IT培训,前端开发培训,web前端培训,软件测试培训'
    //1.定义正则表达式,检测规则
    const reg=/前端/
    //2.检测方法
    console.log(reg.test(str))//true
    

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

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

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

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

    举例

    //要检测的字符串
    const str='IT培训,前端开发培训,web前端培训,软件测试培训'
    //1.定义正则表达式,检测规则
    const reg=/前端/
    //2.检测方法
    console.log(reg.exec(str))//返回的是数组,失败返回null
    

2953321-20250325102052480-1970915262.png

三,元字符

普通字符:

  • 大多数的字符仅能够描述它们本身,这些字符称作普通字符,例如所有的字母和数字。也就是说普通字符只能够匹配字符串中与它们相同的字符。

元字符(特殊字符)

  • 是一些具有特殊含义的字符,可以极大提高了灵活性和强大的匹配功能。比如,规定用户只能输入英文26个英文字母,普通字符的话abcdefghijklm....
    但是换成元字符写法:[a-z]

为了方便记忆和学习,我们对众多的元字符进行了分类:

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

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

    边界符说明
    ^表示匹配行首的文本(以谁开始)
    $表示匹配行尾的文本(以谁结束)

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

量词说明
*重复0次或更多次
+重复1次或更多次
?重复零次或1次
{n}重复n次
{n,}重复n次或更多次
{n,m}重复n到m次

注意:

  1. 逗号两侧不要有空格
  2. 这个重复是重复最近的一个模式

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

  1. []匹配字符集合

    //只要括号里面的任意字符出现都返回true
    //后面的字符串只要包含abc中任意一个字符,都返回true
    console.log(/[abc]/.test('andy')) //true
    console.log(/[abc]/.test('baby')) //true
    console.log(/[abc]/.test('cry')) //true
    console.log(/[abc]/.test('die')) //false
    

    举例:

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

    • [a-zA-z]:表示 a 到 z 的 26 个大小写英文字母都可以

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

    • //腾讯qq号,腾讯qq号从10000开始
      ^[1-9][0-9]{4,}$
      
  2. []里面加上^取反符号

    举例:

    • [^a-z]匹配除了小写字母之外的字符
    • ^要写到中括号里面
  3. . 指匹配除换行之外的任意单个字符

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

    预定义类说明
    \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的缩写,匹配所有满足正则表达式的结果
// 举例:/表达式/修饰符
/a/i.test('a') //true

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

替换 replace

//字符串.replace(/正则表达式/,'替换的文本')
const str = 'java是一门编程语言,JAVA最好用'
const res1 = str.replace(/java/i,'前端')//替换匹配到的第一个java
const res2 = str.replace(/java/ig,'前端')//替换俩个java
const res3 = str.replace(/java|JAVA/g,'前端')//替换java或者JAVA,全部替换
本地存储 2026-06-09

© 2026 苏叶的belog