javascript正则表达式

2018-08-30  本文已影响0人  叶不归宿

正则表达式,又称规则表达式,英语: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}修饰的是()括起来的整体

总结

正则需要多练习

转义字符

特点:以“\”开头
\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.浮点数

参考:
正则表达式练习(js)
正则\1\2和\1的理解

上一篇下一篇

猜你喜欢

热点阅读