编程知识 cdmana.com

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.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

版权声明
本文为[锦天]所创,转载请带上原文链接,感谢
https://wuyujin.blog.csdn.net/article/details/108684060

Scroll to Top