RegExp - 正则表达式
也可称为 "规则表达式"
是一个复杂数据类型
作用:
1. 专门用来验证字符串是否符合规则
2. 从字符串里面获取一部分符合规则的内容
使用方法:
使用一些特定的符号, 来组合成一个表达式
使用这个表达式去验证字符串, 或者从字符串里面获取一些内容
创建一个正则表达式
1. 字面量形式创建
// 1. 字面量创建
const reg = /abcd/;
console.log(reg);
console.log(typeof reg);
复制代码
2. 内置构造函数创建
// 2. 内置构造函数创建
const reg2 = new RegExp('abcd');
console.log(reg2);
console.log(typeof reg2);
复制代码
意义: 字符串里面包含一段 abcd 字母就可以
检测: aaabbbcccddd 不合格
检测: aaabcddddd 合格
正则表达式的两个方法
1. 匹配:
验证字符串是不是符合正则规则
使用方法: 正则.test(你要检测的字符串)
返回值: 一个布尔值, true 或者 false
2. 捕获:
从字符串里面获取符合正则规则的那一部分片段
使用方法: 正则.exec(你要捕获的字符串)
返回值:
1. 字符串里面没有符合规则的片
2. 字符串里面有符合规则的片段
2-1. 基础捕获
返回值是一个数组
[0] 是捕获出来的片段
不管有多少个片段, 都只是捕获第一个片段
不管捕获多少次, 都是第一个片段
2-2. 当正则表达式有 () 的时候
返回值是一个数组
从 索引[1] 开始依次是每一个小括号的单独捕获
2-3. 当正则有全局标识符 g 的时候
第二次捕获会从第一次捕获的结束为开始继续向后查找
直到找不到了位置, 返回 null
再后面一次捕获, 依旧会从 [0] 位置开始查找
const reg = /abcd/;
// 1. test()
console.log(reg.test('aaabbbcccddd'));
console.log(reg.test('aaabcddddd'));
// 2. exec()
const res = reg.exec('aaabbbcccddd')
console.log(res);
const res2 = reg.exec('aaabcdddddabcdabcd');
console.log(res2);
复制代码
正则表达式的元字符 - 基础元字符
元字符: 组成正则的基本符号
以符号的形式来代替文本内容
把所有的文本内容归结成一些符号来代替
1. \s (小写) 表示一个空格
1. \s
// 表示字符串里面需要有一个 空格 字符
const reg = /\s/ ;// 等价于 / /
console.log(reg.test(' abcdefg'));
console.log(reg.test('abc d efg'));
复制代码
2. \S(大写) 表示一个非空格
// \S
// 表示字符串里面需要有一个 非空格 字符
const reg = /\S/
console.log(reg.test(' a'))
console.log(reg.test(' a a a '))
复制代码
3. \t 表示一个制表符(tab)
// 3. \t
// 表示你的字符串里面需要有一个 制表符 字符
const reg = /\t/
console.log(reg.test(' ')) // 两个空格
console.log(reg.test(' ')) // 一个制表符
复制代码
一个制表符就是制表符, 不是多个空格。
4. \d 表示一个数字
// \d
// 表示你的字符串里面需要有一个 数字 字符
const reg = /\d/
console.log(reg.test('abcdef'))
console.log(reg.test('ab1c1d111ef'))
复制代码
5. \D 表示一个非数字
// \D
// 表示你的字符串里面需要有一个 非数字 字符
const reg = /\D/
console.log(reg.test('1234567890'))
console.log(reg.test('12a34a5a67a890'))
复制代码
6. \w 表示一个 数字字母下划线
// \w
// 表示你的字符串里面需要有一个 数字或者字母或者下划线 字符
const reg = /\w/
console.log(reg.test('!@#$%$#@#$%$#$%$#$%$#'))
console.log(reg.test('!@#123123$%$#@#$%$#$%asdasd$#$%$#'))
复制代码
表示 数字 字母 下划线 三选一 得有一个
7. \W 表示一个 非数字字母下划线
// \W
// 表示你的字符串里面需要有一个 数字字母下划线 以外的字符
const reg = /\W/
console.log(reg.test('asdasd123123123____'))
console.log(reg.test('asdasd123123123____%'))
console.log(reg.test('asdasd12312312##3____'))
复制代码
表示 数字 字母 下划线 以外的任意一个都行
8. 点(.) 表示非换行的任意字符
// 点(.)
// 表示你的字符串里面需要有一个 非换行 内容
const reg = /./
console.log(reg.test('\n'))
console.log(reg.test('a\nb'))
console.log(reg.test(' \n'))
复制代码
9. 斜线(\) 表示转义符
把没有意义的内容转换成有意义的内容
把有意义的内容转换成没有意义的内容
// 斜线(\)
// 表示你的字符串里面需要有一个字母 s
const reg = /s/
console.log(reg.test('abcd'))
console.log(reg.test('abcds'))
// 表示你的字符串里面需要有一个 空格字符
const reg2 = /\s/
console.log(reg2.test('abcdssss'))
console.log(reg2.test('abcdssss '))
// 表示你的字符串里面需要有一个 非换行 的任意字符
const reg3 = /./
console.log(reg3.test('asday'))
// 表示你的字符串里面需要有一个 点 文本
const reg4 = /\./
console.log(reg4.test('asdasd'))
console.log(reg4.test('asdasd.'))
// 表示你的字符串里面需要有一个 \ 文本
const reg5 = /\\/
console.log(reg5.test('\\'))
复制代码
评论