RegExp介绍

es通过RegExp类型支持正则表达式

创建方法

let myRegExpType = /pattern/flags;

此正则表达式的pattern(模式)为任意简单或复制的正则表达式

每个正则表达式可以带多个或0个flags(标记)

匹配模式的标记

g

全局模式

查找字符串的全部内容, 而不是找到第一个匹配内容就结束

i

不区分大小写

忽略pattern和被查找字符串的大小写

m

多行模式

查找到一行文本末尾时会继续下一行的查找

y

粘附模式

只查找lastIndex开始及之后的字符串

lastIndex后面会讲

u

Unicode模式

启动Unicode匹配

s

dotAll模式(dot: 点的意思, dotAll, 点代表任何)

表示元字符 . 匹配任何字符(包括\n或\r)

例子

// 可用于匹配字符串中所以的'at'
let pattern1 = /at/g;

// 匹配第一个at并且忽略大小写
let pattern2 = /at/i;

// 匹配所有ac或bc且忽略大小写
let pattern3 = /[ab]c/gi;

元字符与元字符的匹配

元字符还有: ( [ { \ ^ $ | } ] ) ? * + .

这些特殊字符在RegExp中有特殊含义,
所以如果pattern中要匹配这些字符本身, 需要进行转义, 使用反斜杠\

// 匹配所有"'at'", 注意是而不是"at"
let pattern1 = /\'at\'/g;

// 匹配第一个 '\at'并且忽略大小写
let pattern2 = /\\at/i;

使用RegExp构造函数来创建RegExp实例

// 匹配 \ax\ 或 \bx\ 或 \cx\
let pattern1 = /\\[abc]x\\/i
let pattern2 = new RegExp("\\[abc]x\\", 'i');

上述代码的pattern1与pattern2是等效的正则表达式

使用构造函数传递参数时, 参数是字符串

而这个参数转成值其实是要经过一次转义, 而这个值再如pattern1中的模式部分传递进去, 又需要一次转义

所以使用构造函数传递参数时, 特殊符号需要进行二次转义, 也就是要达到 \ 的目的, 则正则表达式为\ , 则正则表达式的字符串形式为 \ \ \ \

使用已有的正则表达式实例作为参数

let pattern1 = /ab/i;
console.log(pattern1);      // /ab/i

let pattern2 = new RegExp(pattern1);
console.log(pattern2);      // /ab/i

let pattern3 = new RegExp(pattern2, 'gi');
console.log(pattern3);      // /ab/gi

可以使用已有的实例作为RegExp构造函数的参数进行创建新的实例, 如pattern1作为参数创建了pattern2

同时可以选择性修改标记, 如pattern2作为参数创建pattern3时, 修改标记为gi

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BetterChinglish

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值