目录
一、正则表达式是什么?
(一)概念
正则表达式,又称规则表达式,(英语:Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"),作用就是用来检验字符串是否符合格式要求,或者在字符串中查找是否有符合格式要求的字符串。
(二)应用场景
对表单域项目(用户名、密码、邮箱、qq号码、手机等等)进行验证,内容替换、获取,手机号替换、 敏感词替换等等。
二、正则的创建和构成(基本语法)
1.字面量创建
语法:let reg = / 正则表达式 / 修饰符;
例如:正则匹配hello
<script>
let reg = /hello/;
</script>
2.直接实例化创建
语法:;let reg = new RegExp( '正则表达式' ,修饰符)
例如:匹配hello
<script>
let reg = new RegExp('hello');
</script>
注意:以对象的方式创建需要加单双引号,但是不要加 / /
三、正则表达式的常用方法-------test方法
作用:验证字符串是否符合正则表达式的格式要求
语法:正则表达式 . test ( 字符串 )
返回值: true (匹配成功,符合要求)、 false (匹配失败,不符合要求)
<script>
let reg = /a/;
let res = reg.test('abc');
console.log(res);//true
</script>
四、正则表达式的构成
(一)普通字符
例如:数字0-9、字母 a-z A-Z、_
(二)特殊字符(元字符)
1、定位符
1)^ 表示以谁开始
<script>
let reg = /^a/;//表示以字母a开始
console.log(reg.test('abc'));//true
console.log(reg.test('bcd'));//false
</script>
2)$ 表示以谁结束
<script>
let reg = /d$/;//表示以字母d结束
console.log(reg.test('abc'));//false
console.log(reg.test('bcd'));//true
</script>
3. ^ 和 $ 可以结合起来使用,会对字符串的内容和长度同时进行验证
<script>
let reg = /^a$/;//表示字符串中只能有一个字符串,且只能是a
console.log(reg.test('abc'));//false
console.log(reg.test('a'));//true
</script>
2.表示数量的限定字符(重复字符)
限定符 | 作用说明 | 例子 |
---|---|---|
* | 重复0次或者更多次 | /a*/ 表示a的个数最少0个,最多无限个 |
+ | 重复1次或者更多次 | /a+/ 表示a的个数最少1个,最多无限个 |
? | 重复0次或者1次 | /a?/ 表示a的个数最少0个,最多一个 |
{n} | 重复n次 | /a{3}/ 表示字符串中包含3个字符a |
{n,} | 重复n次或者更多次,最少出现n次 | /a{3,}/ 表示字符串 a的个数大于等于3个 |
{n,m} | 重复n到m次 | /a{1,5}/ 表示a的个数为1-5个 |
[ ] | 匹配字符组内的内容 | [abc] 表示匹配abc中的任意一个 |
3.转义字符
转义字符:所谓转义字符就是指在普通字符的前面加反斜线,使得他具有特定的功能和含义,也可以在具有特定的功能和含义的字符前面加反斜线,将他转换为普通字符。比如:\d表示任意一个数,\/表示将正则表达式中的斜线转换为普通的斜线
\d | 表示任意一个数字 |
\D | 表示任意一个非数字 |
\w | 表示任意一个数字、字母、下划线 |
\W | 表示任意一个非 数字、字母、下划线 |
\s | 表示任意一个空白符,如:空格 |
\S | 表示任意一个非空白符 |
4.备选字符
[ \u4e00-\9fa5] : 表示任意的一个汉字
五、正则表达式的匹配模式
1.贪婪模式
指正则表达式在对字符串进行匹配时尽可能多的匹配字符,默认就是贪婪模式
2.惰性模式
也称懒惰模式,指正则表达式在对字符串进行匹配时尽可能少的匹配字符,默认是贪婪模式,如果要将贪婪模式转化为懒惰模式,需要在数量修饰符后面加问号
贪婪 | 惰性 |
---|---|
* | *? |
+ | +? |
? | ?? |
{n} | {n}? |
{n,} | {n,}? |
{n,m} | {n,m}? |
六、修饰符
修饰符 | 说明 |
---|---|
i | 忽略大小写 |
g | 全局匹配 |
gi | 即忽略大小写,也全局匹配 |
七、字符串对象中和正则表达式结合使用的方法
(一)search()方法
语法:字符串.search(待查找的字符串 | 正则表达式)
作用:搜索字符串中是否有指定元素,返回符合条件的第一个元素的下标,没有返回-1
<script>
let str = 'Are you confident about the exam tomorrow ';
let reg = /o/g;
/ / search(正则)
let res1 = str.search(reg);
console.log(res1);//5
/ / search(字符串)
let res2 = str.search( 'o', 'g');
console.log(res2);//5
</script>
注意:只能返回第一个符合条件的元素下标,即使加上全局匹配也没用
(二)match()方法
语法:字符串.match(待匹配的字符串 | 正则表达式)
作用:匹配符合条件的内容,返回的是一个数组,就算只有一个符合,返回的也是数组。
<script>
let str1 = 'Are you confident about the exam tomorrow';
let reg1 = /o/;
let res1 = str1.match(reg);
console.log(res1);
//[ 'o', index: 5, input: 'Are you confident about the examtomorrow ', groups: undefined]
let reg2 = /o/g; //全局匹配
let res2 = str1.match(reg);
console. log(res2);
//['o', 'o', 'o', 'o ', 'o ', 'o']
</script>
注意:默认情况下只返回第一个符合要求的内容。
(三)replace()方法
语法:字符串.replace(待匹配的字符串 | 正则表达式 , 替换的内容)
作用:替换字符串中的数据,返回替换后的字符串
<script>
let str = '背对背拥抱';
let reg1 =/背/;
let res1 = str.replace(reg1,"面");
console.log(res1); //面对背拥抱
let reg2 =/背/g; //全局匹配
let res2 = str.replace(reg2,"面");
console.log(res2); //面对面拥抱
</script>
注意:默认情况下只替换第一个符合要求的数据
(四)split()方法
语法:字符串.split(正则表达式)
作用:将一个字符串拆分成数组,返回拆分过后的数组
<script>
let str ='a1b2c3d4e5f';
let reg = /\d/;//匹配数字
let result = str.split(reg);//将数字拆分
console.log(result);
//['a', 'b', 'c', 'd', 'e', 'f']
</script>
注意:即使不设置全局匹配,也是全部拆分的
总结
以上就是今天要讲的内容,本文仅仅简单介绍了正则表达式的语法及方法,希望对大家有所帮助