目录
一 正则表达式简介
1 正则表达式的作用:
用于对字符串进行操作
2 正则的功能(都是对字符串进行的操作):
匹配 替换 提取
二 正则表达式的使用
1 创建方式
const reg = new RegExp("abc");
// 或
const reg = /abc/;
2 简单类的使用
// 可以匹配含有内部字符abc(连续的)的字符串
const reg = /abc/
3 匹配方法
语法结构: 正则对象.test(字符串);
返回值: 匹配成功返回true,否则返回false
console.log(reg.test("tcytbhjkdtrchb")) // false
console.log(reg.test("tcytbhjabckdtrchb")) // true
console.log(reg.test("abzzckdtrchb")) // false
三 正则的一些语法
1 字符类
标识方式,在正则内部书写一个[ ]
[ ]整体表示一位字符,这一位字符可以是[]内部的任意一个
const reg = /[abc]/;
console.log(reg.test("zzazz")); // true
console.log(reg.test("zzbzz")); // true
console.log(reg.test("zzczz")); // true
console.log(reg.test("zzzzz")); // false
2 反向类
反向类是对字符类功能的扩展
标识方式,在字符类的[ ]的后面写一个 ^
作用:标识除内部字符外的其他字符可以匹配成功
const reg = /[^abc]/;
console.log(reg.test("zzazzz")); // true
console.log(reg.test("abcbac")); // false
console.log(reg.test("12333")); // true
3 匹配起始位置
标识方式:在正则最开始书写一个 ^
作用:标识只有包含内部字符才可以匹配成功
4 或者操作符
正则/a|b|c/; 与 /[abc]/; 功能相同
注意与字符类的区别:
1 如果是多种单个字符的匹配,使用字符类
2 如果是多种多个字符的匹配,使用或者操作符
四 范围类与组合类与预定义类
1 范围类
// 小写字母 c至m
const reg = /[c-m]/;
2 组合类
同时设置多种类型
const reg = /[0-9a-gH-M]/;
//所有大小写字母与数字
/[0-9a-zA-Z]/;
3 预定义类
转义符 \
document.write("<pre><div>哈哈\n哈哈</div></pre>");
数字字符 \d 或 [0-9]
console.log(/\d/.test("1")); // true
console.log(/\d/.test("abc")); // false
非数字字符 \D 或 [^0-9]
console.log(/\D/.test("1")); // false
console.log(/\D/.test("abc123")); // true
单词字符 \w 或 [a-zA-Z0-9_]
console.log(/\w/.test("dfghjk")); // true
console.log(/\w/.test("123213213")) // true
console.log(/\w/.test("ADWDAW")) // true
console.log(/\w/.test("_")) // true
console.log(/\w/.test("+-*!/%&|(")); // false
console.log(/\w/.test("+-*!/%&|(_")); // true
非单词字符 \W 或 [^a-zA-Z0-9_]
console.log(/\w/.test("dfghjk")); // false
console.log(/\w/.test("123213213")) // false
console.log(/\w/.test("ADWDAW")) // false
console.log(/\w/.test("_")) // false
console.log(/\w/.test("+-*!/%&|(")); // true
console.log(/\w/.test("+-*!/%&|(_")); // true
不可见字符 (通常用于匹配空格换行等内容) \s 或 [\f\t\n\r等]
console.log(/\s/.test("fydguajida")); // false
console.log(/\s/.test("fydgu ajida")); // true
console.log(/[ ]/.test(" ")); // true 【匹配空格】
可见字符 \S 或 [^\f\t\n\r等]
console.log(/\S/.test("fydguajida")); // true
console.log(/\S/.test(" ")); // false
可见字符 . 或 [^\r\n] (除回车\r 与换行\n以外的其他字符 (在现代计算机中\r和\n和\r\n是相同的))
console.log(/./.test("fydguajida")); // true
console.log(/./.test(" ")); // true
console.log(/./.test("\n")); // false
注意: \S 与 .都用于匹配任意的可见字符,点的匹配范围比\S大,通常使用.
五 边界
1 匹配起始位置
标识方式:在正则最开始书写一个^
const reg = /^abc/;
console.log(reg.test("abcgygyu")); // true
console.log(reg.test("zzzabcgygyu")); // false
2 匹配结束位置
标识方式:在正则的最后书写一个$
const reg = /abc$/;
console.log(reg.test("gygyuabc")); // true
console.log(reg.test("zzzabcgygyu")); //false
3 严格匹配
必须与设置的匹配字符内容完全一致。
设置方式:同时使用^$
const reg = /^abc$/;
console.log(reg.test("abc")); // true
console.log(reg.test("abc1")); // false
console.log(reg.test("1abc")); // false
console.log(reg.test("abcabc")); // false
六 量词
1 指定个数 {n}
const reg = /^a{4}$/;
console.log(reg.test("aaa")); // false
console.log(reg.test("aaaa")); // true
console.log(reg.test("aaaaa")); // false
2 指定至少几个 {n,}
const reg = /^a{4,}$/;
console.log(reg.test("aaa")); // false
console.log(reg.test("aaaa")); // true
console.log(reg.test("aaaaa")); // true
console.log(reg.test("aaaaaaaaa")); // true
3 出现n-m个 {n,m}
const reg = /^a{4,6}$/;
console.log(reg.test("aaa")); // false
console.log(reg.test("aaaa")); // true
console.log(reg.test("aaaaa")); // true
console.log(reg.test("aaaaaa")); // true
console.log(reg.test("aaaaaaaaa")); // false
4 预定义量词
出不出现均可匹配成功 * 或 {0,}
const reg = /^a*$/;
console.log(reg.test("")); // true
console.log(reg.test("a")); // true
console.log(reg.test("aaaa")); // true
console.log(reg.test("aaaaaa")); // true
console.log(reg.test("aaaaaaaaaa")); // true
至少出现1次 + {1,}
const reg = /^a+$/;
console.log(reg.test("")); // false
console.log(reg.test("a")); // true
console.log(reg.test("aaaa")); // true
console.log(reg.test("aaaaaa")); // true
console.log(reg.test("aaaaaaaaaaaaaaaaaaa")); // true
出现0次或1次 ? 或 {0,1}
const reg = /^a?$/;
console.log(reg.test("")); // true
console.log(reg.test("a")); // true
console.log(reg.test("aaaa")); // false
console.log(reg.test("aaaaaa")); // false
console.log(reg.test("aaaaaaaaaaaaaaaaaaa")); // false
正则表达式的匹配模式设置
g - 全局匹配模式 - 匹配到所有满足条件的子字符串
i - 忽略大小写
正则表达式——匹配、提取、替换
加油!加油!🆙 🆙