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('\\'))
复制代码
评论