/*
* RegExp(Regular Expression):
* 按照某个规则去匹配符合条件发字符串,这个就叫正则表达式
*
* 定义正则表达式:
* 通过构造函数 var reg = new RegExp("e","ig");
* 通过直接量 var reg = /pattern/flag
* pattern 正则表达式
* flag 标识(修饰符)
* 修饰符主要有i,g,m,
* i--忽略大小写
* g -- 全局查找,应用于所有字符串,不是在查找到第一个匹配字符就停止
* m -- 多行匹配,查找到一行文本的结束还是继续往下一行去查找
*/
var str = "ABAasdfjkljasaf";
var reg = /a/i;//查找a,忽略大小写
console.log(str.match(reg));
console.log(reg.exec(str));
var reg01 = /a/ig;//全局查找a,忽略大小写
do{
var result = reg01.exec(str);
console.log(result);
}while (result != null);
var str02 = "skjkaljfasjdflsfjlaskflsf";
console.log(str02);
var reg02 = /j/ig;
do{
var resule = reg02.exec(str02);
console.log(result);
}while(result != null);
//[] 用于查找某个范围的字符,比如[abc]表示查找[]之间的任意字符
var str03 = "ahkn123";
var reg03 = /[abc]/;//只要匹配上abc中的任意一个就行
console.log(reg02.test(str03));//true
var reg04 = /[0-9]/;//查找范围,[n-m]查找n到m之间的任意一个,包括n和m
console.log(reg04.exec(str03));
var reg05 = /[4-7]/;//超出范围
console.log(reg05.test(str03));//false
//[a-z]表示从小写字母a到z,[A-Z]表示从大写字母a到z,[0-9]表示数组0到9
//[a-Z]表示从小写字母a到大写字母Z的所有大小写字母
//[^]查找任意不在[]之内的字符,只要有[]内规定的字符以外的字符存在,就能查到
var reg06 = /[^abc]/;
console.log(reg06.test(str03));//true
//()分组 查找()内指定的选项,有一项满足就可以返回
var color = "pink green yellow skyblue gray";
var reg07 =/(pink|gray|skyblue)/g;
console.log(reg07.exec(color));
do{
var res = reg07.exec(color);
console.log(res);
}while(res != null);
//元字符(有特殊含义的字符)
/*
* .用于查找单个字符,不识别换行\n
* \w用于查找单词字符
* \W用于查找非单词字符
* \d用于查找数字
* \D用于查找非数字
* \s用于查找空格
* \S用于查找非空格
* \b用于匹配单词边界 (单词前后是不会和另一个单词直接相连的)
* \B匹配非单词边界
*/
var str = "This is Web_16 group 123!加油";
var reg = /g...p/i;//点 . 代表任意字符, w个b相当于起始位置和结束位置
console.log(reg.exec(str));
var reg01 = /\w/g;//\w用于查找单词,返回的是所有单词的单个字母,识别数字和下划线
do{
var res = reg01.exec(str);
console.log(res);
}while (res != null);
var reg02 = /\W/g;//\W用于查找单词,包括特殊符号,中文等
var result = reg02.exec(str);
while(result != null){
console.log(result);
result = reg02.exec(str);
}
var reg03 = /\d/g;//用于查找数字
console.log(str.match(reg03));
var reg04 = /\D/g;//匹配数字以外的所有字符,包括中文,下划线,特殊符号
console.log(str.match(reg04));
var reg05 = /\s/g;//用于查找空格
do{
var res = reg05.exec(str);
console.log(res);
}while(res != null);
var reg06 = /\S/g;//用于查找非空格
do{
var res = reg06.exec(str);
console.log(res);
}while(res != null);
var reg07 = /\bis\b/g;//b是匹配单词的边界 单词的前后是不会和另一个单词直接相连的
//如果\b在字符前面,说明单词前面有边界,如果\b在单词后面,说明单词后面 有边界,
//如果\b出现在字符的开头和结尾,说明单词两边都有边界
console.log(reg07.exec(str));
var reg08 = /\Bis/g;//\B匹配非单词边界,用法和\b一样
console.log(reg08.exec(str));
//那str变量中的空格替换掉
var reg08 = str.replace(reg05,"□");
console.log(reg08);
//量词
/*
* + /n+/匹配任意多个字符,字符中至少要包含一个n (一个或多个)
* * /n* /匹配任意多个字符,字符中包含0个或者多个n
* ? /n?/匹配任意包含一个或者0个n的字符串
* {n} n必须是数字,s{3}代表匹配有连续3个s的字符
* {n,m}n和m必须是数组,s{3,7}代表s至少连续出现3次,最多连续出现7次
* {n,}n必须是数字,s{3,}代表至少连续出现3次以上,没有上限
* ^ ^[abc]匹配一abc中任意字符开头的字符串
* $ a$匹配以a结尾的字符串
* ?= ?=n 代表匹配任意字符串后紧跟n的字符串
* ?! ?!n 代表匹配任意字符串后面没有紧跟n的字符串
*/
var str01 = "Hello World";
var part = /lo+/g;//+:匹配+前面的字符,至少要包含一个
do{
var res = part.exec(str01);
console.log(res);
}while(res != null);
var part01 = /l.*/ig;//全局搜索l,包括后面紧挨的o,返回0或者多
console.log(part01.exec(str01));
// do{
// var res = part01.exec(str01)
// console.log(res);
// }while(res != null);
var part02 = /llo?/g;//全局搜索l,包括后面紧挨的0个或者1个o
console.log(str01.match(part02));
var par03 = /o{5}/;//查找连续出现5次的o
console.log(part03.exec(str01));
var num = "1233453hjahfjasfhlasf";
var reg_part = /\d{6}/;//查找6个连续的数字
console.log(reg_par.exec(num));
var reg_part01 = /\D{3,7}/;//查找3到7个连续的非数字
console.log(reg_part01.exec(num));
var reg_part02 = /\w{7,}/;//查找7个以上的字母,数字,下划线
console.log(reg_part02.exec(num));
var reg_part03 = /^[123abc]/;//匹配以[]中任意字符开头的字符串,返回字符串首字母
console.log(reg_part03.exec(num));
var reg_part04 = /[^adfg]$/;//不以[]中的任意字符结尾
console.log(reg_part04.exec(num));
var str_num = "This is a Pig This Th";
var reg_part05 = /Th(?=is)/g;//查找后面紧跟is的Th
do{
var res = reg_part05.exec(str_num);
console.log(res);
}while(res != null);
var reg_part06 = /Th(?!is)/g;//查找后面不紧跟is的Th
console.log(reg_part06.exec(str_num));
RegExp(正则)
最新推荐文章于 2023-08-07 09:46:19 发布