正则表达式

目录

正则表达式的定义

直接量字符

字符类

重复

选择、分组和引用

匹配指定位置(锚字符)

修饰符

RegExp对象

RegExp属性

RegExp方法


正则表达式的定义

  • RegExp()构造函数
let temp = new RegExp("s$")
  • 直接量语法
let temp = /s$/

直接量字符

正则表达式通过字母和数字的字面含义进行匹配,特殊的匹配项(需使用\转义)

字符匹配
字母和数字自身
\oNUL字符
\t制表符
\n换行符
\v垂直制表符
\f换页符
\r回车符
\xnn由十六进制数nn指定的拉丁字符
\uxxxx由十六进制数xxxx制定的Unicode字符
\cX控制字符^X

含有特殊含义的符号:

^ $ . * + ? = ! : | \ / ( ) [ ] { }

字符类

使用[ ]包裹,匹配包含的任意字符

let temp = /['"]/
字符匹配
[...]方括号内的任意字符
[^...]非方括号内的任意字符
.除换行符和其他Unicode行终止符之外的任意字符
\w任何ASCII字符组成的单词
\W任何非ASCII字符组成的单词
\s任何Unicode空白符
\S任何非Unicode空白符
\d任何ASCII字符组成的数字
\D任何非ASCII字符组成的数字
[\b]退格直接量

 

重复

let temp = /\d{2,4}/
字符含义
{n,m}匹配前一项至少n次,但不能超过m次
{n,}匹配前一项n次或者更多次
{n}匹配前一项n次
?匹配前一项0次或者1次
+匹配前一项1次或者多次
*匹配前一项0次或者多次

 

非贪婪的重复:

搜索字符会尽可能的多匹配,但是在匹配的字符后加上?便会变成非贪婪的重复,在搜索的时候会尽可能少的匹配

选择、分组和引用

正则表达式中可使用字符 “|” 来分割用来选择的字符

let temp = /ab|cd|ef/

尝试匹配的时候,从左向右匹配,直到发现匹配项。

圆括号()的作用:

  • 将单独的项组合成子表达式
  • 在完整的模式中定义子模式
let temp = /[a-z]+(/d+)/  //之后可从检索的结果中抽取数字
  • 允许在同一正则表达式的后部引用前面的子表达式(通过字符串“\”后加数字来实现,数字为第几个括号,以左括号为标准)
let temp = /([Ss]cript)\2/

仅用于分组,不创建带数字编码的引用(格式为(?:)):

let temp = /([Jj]ava(?:[Ss]cript)?)\sis\s(fun\w*)\2/

这里的\2引用的是(fun\w*)而非(?:[Ss]cript)

匹配指定位置(锚字符)

字符含义
^匹配字符串的开头
$匹配字符串的结尾
\b匹配单词的边界
\B匹配非单词的边界
(?=p)零宽正向先行断言
(?!p)零宽负向先行断言

 

修饰符

let temp = /java$/gi
字符含义
i不区分大小写
g全局匹配
m多行匹配

 

用于模式匹配的String方法

search()

用来搜索字符串中是否含有正则表达式的匹配项

参数:正则表达式

若参数为字符串则自动转换为正则表达式

返回值:第一个与之匹配的字符串的位置,找不到则返回-1

 

replace()

用来检查和替换

参数:正则表达式,进行替换的字符串

若参数为字符串则以字符串搜索

进行替换的字符串若为“$加数字”,将使用指定的子表达式相匹配的文本替换这两个字符

也可使用函数来动态替换

 

match()

搜索匹配的数组

参数:正则表达式

若参数的修饰符没有指定为全局,则只检索第一个匹配项。

依然会返回一个数组,第一项存放完整的匹配项,第二项存放第一个括号的匹配项,以此类推

 

split()

将字符串拆分为数组

参数:正则表达式

返回值:数组

 

RegExp对象

let temp = new RegExp('\\d{5}', 'g')

需使用\转义\

RegExp属性

  • source:正则表达式的文本
  • global:布尔值,是否带有修饰符g
  • ignoreCase:布尔值,是否带有修饰符i
  • multiline:布尔值,是否带有修饰符m
  • lastIndex:如果是全局模式,则存储字符串中下次检索开始的位置(可读写)

RegExp方法

exec()

类比match方法的非全局搜索,(无论全局还是非全局)返回搜索到的第一项的匹配数组。之后将lastIndex设置到第一项的后边,再次调用时从lastIndex的位置开始搜索,直到搜不到后将lastIndex设置为0

参数:正则表达式

返回值:数组,没有的话返回null

 

test()

对字符串进行检测

全局调用的时候和exec()相同,也会从lastIndex的位置开始搜索

参数:正则表达式

返回值:布尔值

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值