一.正则量词与元字符
规则1:全局查找:g
g:从头查到尾部,修饰正则表达式查找方式
var str="hellol";
//创建正则表达式
var reg=/l/g;
var value=str.replace(reg,"o");
console.log(value);
案例:获得某个字符串的所有空格的个数
var str_1="h w e r t ";
var reg=/ /g;
var num=0;
while(reg.exec(str_1))
{num++;}
console.log(num);
或者:
for(var i=0;i<str_1.length;i++)
{if(reg.test(str[i])) num++; }
console.log(num);
规则2:不区分大小写:i
var str_1="ello HELLO";
var reg=/h/;//未加入i
var reg_1=/h/i;//加入i
console.log(reg.test(str_1));//未加入i的输出结果
console.log(reg_1.test(str_1));//加入i的输出结果
var str_2="hello HELLO";
var reg_2=/h/ig;//i和g规则可以共存
console.log(str_2.replace(reg_2,"替换"));
规则3:任意字符 “.”
var str_3="helloel9";
var reg=/e../g;//相当于e和任意字符组合成的多个字符的正则表达式,可以含有多个任意字符存在
console.log(str_3.replace(reg,"M"));
规则4: 0或者1个字符 ?
–问号:修饰的前一个字符,代表前一个字符存在或者不存在
var str_4="hello"; //在内存空间中存放hello字符串的方式为:
//'h' 'e' 'l' 'l' 'o',=即是说每个字符中间正则表达式也会进行校验,即产生MhMMlMlMoM的结果
var reg_4=/e?/g;
console.log(str.replace(reg_4,"M"));
// 对 "1" 进行全局搜索,包括其后紧跟的零个或一个 "0":
var str="1, 100 or 1000?";
var patt1=/10?/g;
console.log(str.replace(patt1,"8"))//则输出为"8,80 or 800?"
console.log(str.match(patt1))//则输出为"1,10,10"
规则5:代表0个或者n个 “*”
–星号:同样是修饰前一个字符存在0次或者n次
var str_5="hello";
var reg_5=/e*/g;
console.log(str_5.replace(reg_5,"M"));
// 对 "1" 进行全局搜索,包括其后紧跟的零个或n个 "0":
var str="1, 100 or 1000?";
var patt1=/10?/g;
console.log(str.replace(patt1,"8"))//则输出为"8,8 or 8?"
console.log(str.match(patt1))//则输出为"1,100,1000"
规则6:代表一个或者N个–"+"
–加号:修饰前面的字符
var str="heelelo";
var reg_6=/e+/g;
console.log(str.replace(reg_6,"M"));
规则7:代表重复的范围 --{}
–大括号:修饰前面的字符
**一.写法说明:**
第一种:{3}代表待操作的字符串内必须含有连续3个正则表达式里的字符串
第二种:{1,3}代表前面的字符最少有一个,最多有3个;首先看是否满足最大值,然后再看是否满足最小值的条件;
第三种:{2,}可以有这种写法,表示最少有2个,最多有N个
var str="heeeelo";
**二.具体实例:**
// 写法1:
var reg_7=/el{3}/g;//{3}代表待操作的字符串内必须含有连续3个正则表达式里的字符串
// 写法2:
var reg_8=/e{1,3}/g;
console.log(str.replace(reg_7,"M"));
console.log(str.replace(reg_8,"M"));
**三.关于{}的其他例子:**
var str="hello";
var str_1="he@@llo";
var reg_9=/el{2}/g
console.log(str.replace(reg_9,"M"));
//输出为:hMo,可以理解为若正则表达式的检验字符不相同的话则大括号对其前面的一个字符进行正则匹配判断,因为是要有两个"l"才生效,所以"ll"被检索到并进行替换,顺带替换掉检索的"e",所以结果为hMo
var reg_10=/@@{2}/g;
console.log(str_1.replace(reg_10,"Q"));
输出为:he@@llo,可以理解为若正则表达式的检验字符相同的话则大括号对其前面的所有字符进行正则匹配判断,因为要有2个"@@"才能校验成功,所以校验失败,返回原字符串的内容
规则8:
(1)或规则 --|
var str="hello";
var reg_11=/h|l/g;//即是替换h或者l的字符,可进行多个替换
console.log(str.replace(reg_11,"M"));
(2)或规则–[]
var str_1="hello";
var reg_12=/[he]/g;//中括号里的内容为或的内容,空格,逗号等内容也算是或的一种
console.log(str_1.replace(reg_12,"M"));
(3)或规则典型例子:
--(1)替换所有的英文字符:(包含所有大小写)
var str="hellosadihaohfisahuifhasd";
var reg_13=/[a-zA-Z]/g;
console.log(str.replace(reg_13,"M"));
--(2)替换所有数字
str="1234324892934823";
var reg_14=/[0-9]/g;
console.log(str.replace(reg_14,"0"));
--(3)删除所有的汉字
var str="你好hello";
var reg_15=/[\u4e00-\u9fa5]/g;//在内存空间中,汉字一般有专门的编码方式,\u是代表UTF-8编码
console.log(str.replace(reg_15,""));
规则9:
(1)以什么开头-- ^
var str="hello";
var reg=/^h/g;//判断是否以正则表达式的校验字符开头
console.log(reg.test(str));
(2)以什么结束 $
var str="hello"
var reg_16=/o$/g;//判断是否以正则表达式的校验字符结尾
console.log(reg_16.test(str));
规则10:取反规则 --^
----注意:要和中括号一起使用
例子:只保留数字
var str="123hh";
var reg=/[^0-9]/g;//去除非数字的字符规则
console.log(str.replace(reg,""));
规则11:整体字符–()
var str="hehehello";
var reg=/(he){3}/g;
console.log(str.replace(reg,"M"));
小综合实例:
1.判断一个字符串是否为6位长度的数字
var str="123456";
var reg=/^[0-9]{6}$/g;//[0-9]限制大括号里的6位必须是数字,然后"^"和"$"限制开头和结尾,即限制必须只有六位数
console.log(reg.test(str));