JS垫脚石-正则表达式

本文详细介绍了正则表达式的概念及使用方法,包括定义方式、元字符、正则方法、字符串方法、修饰符、量词等内容,帮助读者快速掌握正则表达式的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

  • 正则表达式是一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等
  • 使用较少的代码就能完成较复杂的字符串处理工作

定义方式

  1. var re = new RegExp('abc');
  2. var re = /abc/;(常用写法)

元字符

在正则表达式中具有特殊意义的专用字符,用来代替一个或多个字符
- . 匹配任意字符,除了换行和行结束符
- \w 匹配a~zA~Z0~9字符
- \W 匹配非a~zA~Z0~9字符
- \d 匹配数字
- \D 匹配非数字
- \s 匹配空白字符(\r,\n,空格)
- \S 匹配非空白字符
- \b 匹配单词边界
- \B 匹配非单词边界
- \n 匹配换行符
- \r 匹配回车符

正则方法

  • test() 检测字符串中是否有正则中需要匹配的子字符串,如果有就返回true,没有则返回false
    用法:正则对象.test(str) 如re.test('2');
  • exec() 不管加不加g,都只匹配一次。但是在有全局匹配的时候,每一次匹配,都是从上一次匹配的结果之后开始进行新的匹配
    注:match()/exec()都是返回的数组,如果匹配不到值,返回的都是null

字符串方法

  • indexOf() 只能查找具体的字符串;可以指定开始查找的位置;查找不到指定字符返回-1
  • search() 可以进行模糊查找(如 search(/\d/) search('a'));只能从字符串开头开始查找,不能指定查找位置
  • match() 将匹配的结果存入到数组中,并返回这个数组(没有g参数:只匹配第一次的结果;有g参数:匹配所有结果)
    str.match(/d/gi);
    'kflkaujdUUffg*^d'.match(/u/ig)
  • replace() 将匹配的字符替换成其它字符 参数有两个(第一个:用来匹配的正则表达式或字符串;第二个:新的字符串或者返回新字符串的处理函数)
    'fdas232#@正则#$@2fdas'.replace(/正则/,'一二三');
  • split() 用指定字符分割字符串

修饰符

  • i:忽略大小写
  • g:全局匹配
  • m:匹配多行
    语法:/\d/修饰符

量词

  • n+ 匹配任何包含至少一个n的字符串
  • n* 匹配任何包含零个或者多个n的字符串,最少可以没有(空字符串)
  • n? 匹配任何包含零个或一个n的字符串,最多只匹配一个字符
  • n{X} 匹配包含X个n的序列的字符串
  • n{X,Y} 匹配包含X或Y个n的序列的字符串
  • n{X,} 匹配至少X个n的序列的字符串
  • n$ 匹配任何结尾为n的字符串
  • ^n 匹配任何开头为n的字符串
    str.match(/^\d+[a-z]{2}/gm); //匹配以数字开头的字符串,数字个数为1~多个,数字后面带两个字母,匹配多行
  • ?= 匹配任何其后紧接指定字符串n的字符串
    str.match(/\d(?=a)/g);
  • ?!= 匹配任何其后没有紧接指定字符串n的字符串
  • \1 提取重复的数字,后面提取出的字符与前面提取出的字符是重复的
    str.match(/[a-z](\w)\1+/g);

字符类

  • [abc] 匹配任意一个在[]中存在的字符
  • [a-z][A-Z][0-9]范围匹配
  • [a-z0-9A-Z] 上述的组合运用
  • a|b 匹配|左边或者右边的字符
  • () 对正则进行分组
  • 汉字范围:\u4e00-\u9fa5;
    注:一个[]只表示一个字符;表示范围只能是0-9、a-z、A-Z,不能倒序;元字符等特殊含义的字符,如果要使用本来的字符来匹配,需要使用\来取消转义

分组、子项与引用

  • 小括号的作用:1、分组:对正则规则进行分组描述;2、作为正则的一个子项
    注:正则的子项顺序是按左小括号的顺序来计算的
    /(\d)(\w)\2+/g
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值