正则表达式的基本使用

958 阅读3分钟

前言

正则表达式是用于匹配特殊字符和特殊搭配的字符串的强大工具,今天我们来梳理一下常用的基础知识,以便快速上手和复习

创建方式

  1. 字面量 格式:/pattern/attributes
var reg = /abc/g //表示全局匹配abc字符串
  1. 通过new RegExp创建 格式:new RegExp(pattern,attributes)
var  reg = new RegExp('abc','g')

说明:

  • pattern表示正则表达式的模式,即要匹配的规则
  • attributes是一个可选参数,包括 g i m,分别别表示全局匹配,忽略大小写和多行匹配。默认情况是非全局匹配、不忽略大小写和单行匹配
  • 返回值是一个具有指定模式也标志的RegExp对象,typeof reg 为object
  • 当pattern为不合法正则或者attributes包含gim以外的字符时,会报错syntaxError

下面会看具体的一些规则

一些规则

  1. [] 用于查找某个范围内的一个字符
  • [abc] 表示查找abc中的任意一个字符
  • [^abc] 表示查找不是a不是b也不是b的任意一个字符;^在[]里表示非
  • [0-9] 表示查找从0到9的任意数字,-表示到或至的意思
  • [a-z] 表示查找a到z的字符
  • [A-Z] 表示查找A到Z的字符
  • [A-z] 表示查找A到z的字符
  1. 元字符 表示拥有特殊含义的一个字符`
  • . 表示任意一个字符,除换行;可用\.表示"."这一个字符
  • \w 表示单词字符
  • \W表示非单词字符
  • \d 表示数字字符
  • \D 表示非数字字符
  • \s 表示查找空白字符
  • \S 表示查找非空白字符
  • \n 换行
  • \r 回车符
  • \t 制表符
  • \uxxxx 表示十六进制的数xxxx所对应的Unicode字符
  1. () 用于表示某组正则规则,可以作为整体被修饰,也可以供后续调用

小括号括起来的这部份正则表达式可以被当作一个“组”。这个组可以作为整体被后面的修饰,也可在后续处理中单独获得这一部分正则的匹配结果。小括号将其作为一个组,同时记下了匹配的结果。正则表达式 \n表示“第N个组”的结果,因为一个正则表达式中可能有多个小括号扩起的组,所以用 \1 \2 \3 等来分别代表之前的第1组第2组第3组

  1. 量词 表示字符出现的数量
  • + 表示一个到多个
  • * 表示0个到多个
  • ? 表示存0个或1个
  • {x} 表示出现x个的字符串
  • {x,y} 表示x个到y个的字符串
  • {x,} 表示x个到infinity个的字符串
  • $ 表示以什么结尾的字符串,比如/n$/表示以n结尾的字符串
  • ^ 表示以什么开头的字符串,比如/^n/表示以字母n开头的字符串
  • ?= 表示后面紧接某字符串的字符串,比如/?=n/表示后面紧接字母n的字符串
  • ?! 表示后面不紧接某字符串的字符串,比如/?!n/匹配后面不紧接n的字符串
  • | 表示或者,例如(x|y) 匹配x或者y
  1. 正则对象常用方法
  • compile() 编译和改变正则
  • test() 用于检测某字符串是否包含正则表达式所表示的字符串。返回true或false
  • exec() 检测某字符串是否包含正则表达式所表示的字符串,返回一个对象,这个对象记录了找到的值和第一次出现的位置 index下标

image.png

6. 包装类字符串对象身上的常用方法(与正则相关的)

  • 在replace() 中使用正则

表示替换字符串中通过正则匹配的子串

var str = "Visit Microsoft!";
var res = str.replace(/microsoft/i, "W3School"); 
//res 的结果将是:Visit W3School!
  • search 查找字符串中与正则相匹配的子字符串在字符串中的索引位置,没有匹配到返回-1

image.png

  • match 用于返回与正则相匹配的子串,返回子串组成的类数组

image.png