正则表达式 (RegExp)
转义字符 \ 字符串换行符 \n
正则表达式的作用:匹配特殊字符或有特殊搭配原则的字符的最佳选择
两种创建方法: 直接量 new RegExp(); 推荐使用直接量
直接量:
let reg = /正则表达式/;
let aa = /abc/; 匹配字符串中是否有连着一切 且必须是小写的abc
let str = 'abcd';
//aa.text(str); 测试方法 str中是否有符合aa表达式的字符串 返回为布尔值
new RegExp() :
let reg = new RegExp("正则表达式",‘限定符’);
修饰符 i(忽略大小写) g(全局匹配) m(多行匹配)
let reg = /ab/m;
let str = 'ababababab';
// 调用字符串方法 match(正则表达式) 挑出所有符合正则表达式的字符串 存入数组中
str.match(reg);
//多行匹配
let reg = /^a/gm;
let str = 'abcde\na';
// 当字符串中存在换行符 m可以执行多行匹配 ^a 代表以a开头的a;
方括号(表达式)
// [abc] 查找方括号之间的任何字符
let reg = /[ab][cd][d]/g;
let str = 'abcd';
[^abc] ^ 为 非
[0-9] 查找任何从0-9的数组
[a-z] 查找任何从小写a到小写z的字符
[A-Z] 查找任何从大写A到小写Z的字符
[A-z] 查找任何从大写A到小写z的字符
let reg = /[0-9A-z][cd][d]/g;
let str = ‘abcd’;
[adbk] 查找给定集合内的任何字符
[^adgk] ^ 为 非
// (red|blue|green) 查找任何指定的选项
let reg = /(abc|bcd)[0-9]/g; 查找以abc或bcd加一个数字的字符
let str = 'bcd2';
元字符
. 查找单个字符 ,除了换行和行结束符 . === [^\r\n]
\w 查找单词字符 \w === [0-9A-z_] \W === [^\w]
\d 查找数字 \d === [0-9] \D === [^\d]
\s 查找空白字符 (空格,\t,\r,\n,\f,\v) \S === [^\s]
// \b 查找单词边界 \B === [^\b]
let reg = /\bcde\b/g; c前面是单词边界 e后面是单词边界
let str = 'abc cde fgh';
\0 查找nNUl字符
\n 查找换行符
\f 查找换页符
\r 查找回车符
\t 查找制表符 TAB
\v 垂直制表符
\uxxxx unicode码 可以匹配汉字
量词 n为量词(也就是元字符)
// n+ 匹配任何包含至少一个n的字符串 {1,}
// n* 匹配任何包含零个或多个n的字符串 {0,}
let reg = /\d*/;
let str = 'abc'; //匹配不出数字 *会匹配\0 也就是空字符 所以结果匹配出 '‘ ’‘ ’‘ ’‘ 四个空
// n? 匹配任何包含零个或一个n的字符串 {0,1}
let reg = /\w?/g;
let str = 'aaa'; 会匹配出 'a' 'a' 'a' '' 三a一空
// n{X} 匹配含x个n的序列的字符串 {x}
let reg = /\w{3}/g;
let str = 'aaaaaa' 'aaa' 'aaa'
// n{X,Y} 匹配含x到y个的n的序列的字符串 {x,y}
let reg = /\w{3,5}/g; 贪婪匹配 能匹配五个就不匹配少的
let str = 'aaaaaaaa' 'aaaaa' 'aaa'
// n{X,} 匹配含至少x个的n的序列的字符串 {x, }
n$ 匹配以n为结尾的字符串
^n 匹配以n为开头的字符串 ^放括号里为非 放外边为以什么开头
?=n
?!n
RegExp 方法 .lastIndex .exec();lastIndex 表示当前匹配游标(光标在哪一位).exec(); 根据游标的位置,进行下一次匹配
let str = 'aaaa';
let reg = /(\w)\1\1\1/; \1代表引用第一个表达式的值 这句就是匹配四个\w为一组
let str = 'aaaa'
let reg = /(\w)\1(\w)\2/; \2 代表引用第二个表达式的值,这句匹配形如aabb 为一组
// 此时第一个\w和第二个\w会储存在 lastIndex类数组中
正则表达式toString方法 .mathch() 匹配字符串中的正则表达式
正则表达式toString方法 .search() 返回匹配到的正则表达式的位置 匹配不到返回-1
toString 方法 .replace()
replace(“查找”,“替换为”) replace只能替换查到的一个字符
要想替换多个,可以用正则表达式
let reg = /a/g;
let str = 'aa';
console.log(str.replace(reg,'b')); 可以匹配替换两个
let reg = /(\w)\1(\w)\2/g;
let str = 'aabb'; //替换为bbaa形式
console.log(str.replace(reg,'$2$2$1$1')); // $为引用第几个子表达式的内容(\w)
let reg = /(\w)\1(\w)\2/g;
let str = 'aabb'; //替换为bbaa形式
console.log(str.replace(reg,function($,$1,$2){ //第一个参数为reg ,第二个参数为第一个子表达式内容,第三个也是
return $2 + $2 + $1 + $1;
}));
let reg = /-(\w)/g;
let str = 'the-first-name'; //转换为小驼峰式
console.log(str.replace(reg,function($,$1){
return $1.toUpperCase();
}))
正向预查 ?=n ?!n
let str = 'abaaaaa';
let reg = /a(?=b)/g; 表示a后面跟着一个b的a 输出a
let str = 'abaaaaa';
let reg = /a(?!b)/g; 表示a后面跟着不是b的a 输出a a a a a
正则表达式为贪婪匹配 能匹配多不匹配少 非贪婪匹配在量词后面加?
let str = 'aaaaa';
let reg = /a?/g; 输出 a a a a a
本文详细介绍了正则表达式的概念、转义字符、创建方法、修饰符、字符类、量词及正向预查等,教你如何使用正则表达式进行字符串匹配、替换和处理,包括实例解析和实用技巧。
3674

被折叠的 条评论
为什么被折叠?



