javascript正则表达式
正则表达式,又称规则表达式,英语:RegularExpression,在代码中常简写为regex,regexp,RE
作用:快速查找匹配的字符串内容
创建正则表达式
1. var reg = new RegExp();
var str = "你NBEST";
var reg = new RegExp('NB');
console.log(reg.test(str)); //true
2.var reg = /N/;
console.log(reg.test(str)); //true
正则常用函数
1.test()
判断字符串中是否有符合正则规则的内容,返回值是bool类型
2.exec()
查找到符合正则表达式的字符串所在的源字符串的位置下标
字符串常用的函数
replace,match,search
match与exec返回值类似,归属不同
正则元字符
1.全局查找g
g:从头查到尾(影响replace, exec)
var str = "hello";
var reg = /l/;
var val = str.replace(reg,'m');
console.log(val) //hemlo
//全局查找
var str = "hello";
var reg = /l/g;
var val = str.replace(reg,'m');
console.log(val) //hemmo
获得字符串所有空格个数
var str = "你 好 吗 ?";
var reg = / /g;
var val = reg.exec(str);
var val1 = reg.exec(str);
console.log(val)
console.log(val1)
image.png
var str = "你 好 吗 ?";
var reg = / /g;
var num = 0;
while(reg.exec(str)){
num++;
}
console.log(num) //3
2.不区分大小写 i
i和g可以共存
//不区分大小写
var str = "hello";
var reg = /l/ig;
var val = str.replace(reg,'你好');
console.log(val);
3.任意字符 .
//任意字符
var str = "helloele"
var reg = /e./g; //查找2个字符(连起来的2个字符),一个是e,另一个任意
console.log(str.replace(reg,'好')); //h好lo好e
4. 0个或者1个字符 : ?
?修饰的是前一个字符:前一个字符存在或者不存在
var str = "hello";
var reg = /e?/g;
var val = str.replace(reg,'m');
console.log(val); //mhmmlmlmom
从h之前开始查找,,e与h之间,字符与字符之间有一块区域(内存问题)
5. 代表0个或者n个 : *
*同样是修饰前一个字符,存在0次或者n次
?,*一般不做替换,做查找
6代表1个或者N个 :+
+修饰前一个字符
var str = 'hello';
var reg = /e.+/g; //e后面跟0个或者多个.
console.log(str.replace(reg,'m')); //hm
7.重复的范围:{}
修饰{}前面的字符
{3}代表前面的字符必须有连续的3个
{1,3}代表前面的字符最少有一个,最多有3个
{2,}代表最少2个,最多n个
var str = "heeeello";
var reg = /e{3}/g;
//var reg = /e{1,3}/g; // hmmllo
/var reg = /e{2,3}/g; //hmello 先判断最大的数量,再判断最小的
console.log(str.replace(reg,'m')) //hmello
8.或规则: |
var reg = /h|l/g
9.或规则:[]
[]里的内容不允许有空格,逗号
空格,逗号会被当成或的一种
var reg = /[hel ]/g
var reg = /[a-z]/g //a到z的所有小写
var reg = /[a-zA-Z]/g //大小写
var reg = /[0-9]/g
汉字的正则
var reg = /[\u4e00-\u9fa5]//g //汉字编码。包含了所有的汉字
10.以什么开头:^
var reg = /^he/g; //以he开头
11.以什么结尾:$
var reg = /o$/g; //以o结尾
案例
判断一个字符串是否是6位长度的数字
/^[0-9]{6}$/g //加上开头和结尾
12.取反规则 :^
取反规则要和[]一起用
//去掉非数字的字符
var str = "123helo%$";
var reg = /[^0-9]/g;
console.log(str.replace(reg,'9')) //123999999
13.小括号规则
var reg = /(he){3}/g; //he整体出现3次,{3}修饰的是()括起来的整体
总结
- 修饰整个正则表达式的内容,g和i
- 修饰前一个或者前一个小括号括起来的内容,?,+,*,{}
- 其他: .,|,[],^,$, 取反, ()
正则需要多练习
转义字符
特点:以“\”开头
\n,\d,\w
\d 等价于 [0-9]
\D : [^0-9]
\w : [^A-Za-z0-9_]
练习题
1.连续2个相同的数字
2.连续3个或3个以上 相同的 字符
3.正整数
4.负整数
5.整数
6.正浮点数
7.负浮点数
8.浮点数