正则表达式

42 阅读2分钟

也叫规则表达式Regular Expression,用它的规范写一串字符串,这个字符串可以用来检索、替换。 一般定义const reg = / /,在双斜杠里面就写的是正则表达式。

一、正则的方法

例如 reg = /abc/,表示匹配abc。下面就用它来介绍正则的几种方法:

1. test()返回true/false,查看是否匹配。一般用在校验。

reg.test('abcc')  //输出true,匹配到了
reg.test('adss') //输出false,没匹配上

2. repalce()返回字符串,把匹配上的片段用别的字符串替代掉

'yyabczz'.replace(reg,'***') //输出'yy***zz'
'abcabcyy'.replace(reg,'x') //输出'xabcyy'

3. exec()查找并返回当前的匹配结果,并以数组的形式返回

reg.exec('aabcww') 
//输出['abc', index: 1, input: 'aabcww', groups: undefined]
reg.exec('aabcwwabc') 
//输出['abc', index: 1, input: 'aabcwwabc', groups: undefined]
reg.exec('aa') 
//输出null

4. match()

'aabcww'.match(reg) 
//输出['abc', index: 0, input: 'abcdfeabc', groups: undefined] 当reg不是全局的时候,和上面exec得到的一样
//当reg = /abc/g , g是global表示全局(后面会说)
'abcdfeabc'.match(reg) //输出['abc', 'abc']

二、正则的语法

1. 修饰符 写在/abc/后面的

修饰符全称作用
gglobal全局匹配,查找所有的匹配项
iignore忽略大小写匹配

2. 元字符-边界符

2.1单词边界 \b

比如想要替换单词cat,用正则/cat的时候当它遇到catter的时候也会把前面三个字母替换掉。于是就用到了单词边界\b。
写做:const reg = /\bcat\b/

2.2字符串边界 ^ $

/^a/表示匹配以a开头的字符串 /a/表示匹配以a结尾的字符串/a/表示匹配以a结尾的字符串 /^a/叫做精确匹配,必须是一模一样,reg.test('aaa')也是会返回false,不匹配。

3. 元字符-量词

写法作用
/a*/0次或更多次
/a+/1次或更多次
/a?/0次或1次
/a{n,}/大于等于n次
/a{n,m}/n-m次

4. 元字符-字符类

写法作用
/[abc]/匹配abc中的任意一个
/[a-z]/匹配a-z中的任意一个
/[a-zA-Z0-9_]/任意字母数字下划线
/[^abc]/匹配abc以外的任意一个
/./匹配除换行符以外的任意字符;reg.test('')也匹配不到,为false
预定义
------------------
/\d/===/[0-9]/
/\D/===/[^0-9]/
/\w/===/[0-9]/
/\W/===/[^0-9]/

5. 分组

5. 分支

笔记来源:黑马前端两小时快速掌握正则表达式