认识正则表达式 - Regular Expression
目的: 验证字符串是否符合规则
是一个 复杂数据类型
正则表达式的创建
-
字面量方式创建
=> 语法: var reg = /abcd/
-
内置构造函数创建
=> 语法: var reg = new RegExp(‘abcd’)
// 1. 字面量方式创建
const r1 = /abcd/
console.log(r1)
// 2. 内置构造函数创建
const r2 = new RegExp('abcd')
console.log(r2)
- 两种创建方式的区别
正则表达式的常用方法
-
匹配
-
目的: 检测对还是不对
-
语法: 正则表达式 . test(字符串)
-
返回值: 一个布尔值
=> 如果字符串满足正则表达式规则, 那么返回 true
=> 如果字符串不满足正则表达式规则, 那么返回 false
-
-
捕获
目的: 从原始字符串中截取出符合正则表达式规则的部分字符串片段
// 1. 匹配
// 正则: 验证字符串中是否包含完整的 'abcd' 字符串片段
const reg = /abcd/
const res = reg.test('hfgasjhfgab cdsjhdagfjhk')
console.log(res)
正则表达式的组成
-
文本内容
-
元字符
=> 在正则表达式内用一个符号来表示一类内容
元字符 1. \d 表示 一位 数字 2. \D 表示 一位 非数字 3. \s 表示 一位 空白内容(空格, 缩进) 4. \S 表示 一位 非空白内容 5. \w 表示 一位 数字字母下划线任意内容 6. \W 表示 一位 非数字字母下划线的任意内容 7. . 表示 一位 非换行的任意内容 8. \ 表示 转义符
// 1. \d // 表示字符串中必须包含一位数字(0-9) const reg = /\d/ console.log(reg.test('sduygfkasgdfh')) console.log(reg.test('sduygfkasgdfh1')) console.log(reg.test('4sduygfkasgdfh')) console.log(reg.test('sduygfk6asgdfh'))
// 2. \D // 表示字符串中必须包含一位非数字内容 // const reg = /\D/ console.log(reg.test('1234567890')) console.log(reg.test('123456789 0')) console.log(reg.test('1234.567890')) console.log(reg.test('1234中文567890'))
// 3. \s // 表示字符串中必须包含一位空白内容 const reg = /\s/ console.log(reg.test('sdukyf gyukasdgfv564567 4764765^&%$^&%$^&'))
// 4. \S // 表示字符串中必须包含一位非空白内容 // const reg = /\S/ console.log(reg.test(' 1 '))
// 5. \w // 表示字符串中必须包含一位 数字(0-9) 或者 字母(a-zA-Z) 或者 下划线(_) 任意一个都行 // const reg = /\w/ console.log(reg.test('!@#$%^&*()')) console.log(reg.test('!@#$%^&*(f)')) console.log(reg.test('!@#$%3^&*()')) console.log(reg.test('!_@#$%^&*()'))
// 6. \W const reg = /\W/ console.log(reg.test('1234567^890_sdfghjkSDFGHJK'))
// 7. . // 表示字符串中必须有换行以外的内容 // const reg = /./ console.log(reg.test('\n\na\n'))
// 8. \ // 使用转义符把