JavaScript String RegExp 正则表达式 相关方法

概念熟悉

正则表达式对象的创建

主要两种:
直接写 正则表达式字面量,
或使用 RegExp 构造方法传入 正则表达式字面量。

注意标志位的设置

r1 = /\d{3}/
/\d{3}/

r2 = /\d{3}/gimy
/\d{3}/gimy

r3 = new RegExp(/\d{3}/)
/\d{3}/

r3 = new RegExp(/\d{3}/gimy)
/\d{3}/gimy

r4 = new RegExp(/\d{3}/, "gimy")
/\d{3}/gimy

正则表达式的标志位 flags

g global 全局模式
i ignoreCase 忽略大小写
m multiline 多行匹配
y sticky 搜索是否具有“粘性” 见MDN RegExp sticky

正则表达式对象的更多属性

在这里插入图片描述

String API

String.prototype.replace(searchValue, replaceValue): string

对本字符串中:指定(模式的)字符串 统一替换为 replaceValue。
返回新的结果字符串。

不会改变原字符串。
默认只会替换匹配到的第一个,如果需求是全部替换,则设置正则表达式 global=true

例:

"123asd456hhh".replace(/\d/, "_");  // 替换掉字符串中 第一个 数字字符
"_23asd456hhh"
"123asd456hhh".replace(/\d/g, "_"); // 替换掉字符串中 所有的 数字字符
"___asd___hhh"

String.prototype.split(separator, ?limit): String[]

"aaa666bbb777ccc888".split(/\d+/)
(4) ["aaa", "bbb", "ccc", ""]

String.prototype.match(regexp): string[]

查找字符串str对象中,指定模式的子字符串。
返回匹配到的字符串数组。

依旧注意 flags

"123asd456hhh".match(/\d/)
["1", index: 0, input: "123asd456hhh", groups: undefined]
"123asd456hhh".match(/\d/g)
(6) ["1", "2", "3", "4", "5", "6"]

String.prototype.search(regexp): Number

查找指定(模式的)子字符串 第一次出现的位置(起始点下标)
返回该下标数值。

RegExp API

RegExp.prototype.test(string): boolean

在给定字符串上查找,是否有子字符串与本模式相匹配。
如果想测试整个字符串的模式,可以使用正则表达式的^ $判断是否为开头和结尾。

/\d{3}/.test("123")
true
/\d{3}/.test("123456")
true
/^\d{3}$/.test("123456")
false

RegExp.prototype.compile(pattern, flag): RegExp

重新编译一个正则表达式。
因API设计不合理,已弃用。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/compile

RegExp.prototype.exec(string): string[]

在给定字符串上执行搜索,搜索符合本模式的子字符串。
返回匹配到的子字符串的数组。

详见 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值