正则表达式

昨天去多益网络笔试,让再一次我知道了正则表达式有多重要。笔试卷子上考察正则表达式,选择、简答各一道,最后一道编程也考正则。我竟然把test和match是谁的方法都记错了(reg.test(str);str.match(reg))

一些我的笔记

1、声明

1
let reg = /abc/g

i:忽略大小写
g:全局匹配
m:多行匹配
也可以这样声明:

1
let reg = new RegExp("aBc","i")

需要注意:

1
2
3
let reg1 = /abc/g
let reg2 = new RegExp(reg1)
//这是两个正则表达式
1
2
3
let reg1 = /abc/g
let reg2 =RegExp(reg1)
//可以这样用,但这两个变量是同一个正则表达式,两个变量指向同一个地址

2、方法

1
2
reg.test(str) //查看str里有没有reg,返回true/false
str.match(reg) //返回检索内容

3、正则表达式的具体写法

1
let reg = /[1234567890][1234567890][1234567890]/g

一个[]代表一个字符,里头写取值范围

[]里面的写法还是比较随意的,可以用-来指定范围,比如

1
2
3
let reg = /[0-9A-z][cd][d]/g
let reg = /[^a]/g //匹配不是a的字符
let reg = /(abc|bcd)/g //匹配一个abc或bcd的子串

[]里的细节——元字符

. =>[^\r\n] 非行结束
\w =>[0-9A-z]
\W =>[^\w]
\d =>[0-9]
\D =>[^\d]
\s =>[\t\n\r\v\f]
\S =>[^\s]
\b =>表示匹配单词边界
\B =>非单词边界
\uXXXX =>表示匹配以十六进制编码的Unicode字符
一个()代表一个表达式

1
2
3
4
var str="aaaa";
var reg =/(\w)\1\1\1/g;//()表示子表达式;\1表示引用第一个子表达式
var str ="aabb";
var reg =/(\w)\1(\w)\2/g;

一些修饰

1
2
3
4
5
6
* =>匹配1->∞次
+ =>匹配0->∞次
? =>匹配0->1次
{x,y} =>匹配x->y个
^abc =>以abc开头
abc$ =>以abc结尾

4、正则表达式里的属性和方法

reg.lastIndex //游标
reg.exec() //滑动游标

5、案例

the-first-name => theFirstName
把the-first-name变成小驼峰式

1
2
3
4
5
let reg = /-(\w)/g
let str = "the-first-name"
console.log(str.replace(reg,function($,$1)){
return $1.toUpperCase()
})

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×

// tidio机器人助手