带你学正则表达式

正则表达式(Regular Expression)是用于匹配字符串中字符组合的模式,在 JavaScript中,正则表达式也是对象。

这些模式被用于 RegExp 的 exec 和 test 方法, 以及 String 的 match、matchAll、replace、search 和 split 方法。

正则表达式可用于所有文本搜索和文本替换的操作
那就开始吧~

语法

/正则表达式主体/修饰符(可选)

使用字符串方法

在 JavaScript 中,正则表达式通常用于两个字符串方法 : search() 和 replace()。

search()方法
        /*
         * search
         * 搜索字符串中是否含有指定内容,返回子串的起始位置
         */
        var str = "hello abc aec aqc";
        console.log(str.search(/a[beq]c/));

结果:
6

replace()
        /*
         * replace 替换
         */
        var p = 'The quick brown fox jumps over the lazy dog. If the dog reacted, was it really lazy?';
        console.log(p.replace("fox","Monkey"));

结果:
The quick brown Monkey jumps over the lazy dog. If the dog reacted, was it really lazy?

split()
	    /*
         * split(): 切片,除去该参数,将分割后的字符串存储到数组中的String方法中
         */
        var str = "1z3v3f4n5i6s";
        var result = str.split(/[0-9]/);
        console.log(result);

结果:
['', 'z', 'v', 'f', 'n', 'i', 's']

match()
	    /*
         * match: 可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配
         */ 
        var str = "The rain in SPAIN stays mainly in the plain"; 
	    var n = str.match(/ain/g);

结果:
ain,ain,ain

使用 RegExp 对象

在 JavaScript 中,RegExp 对象是一个预定义了属性和方法的正则表达式对象。

test()
	    /*
         * test():检测一个字符串是否匹配某个模式
         */
	    var patt1=new RegExp("e");
        document.write(patt1.test("The best things in life are free"));

结果:
true

exec()
        /*
         * exec() 
         * 方法用于检索字符串中的正则表达式的匹配
         * 该函数返回一个数组,其中存放匹配的结果,如果未找到匹配,则返回值为 null。
        */
        var patt1=new RegExp("e");
        document.write(patt1.exec("The best things in life are free"));

结果:
e

正则表达式修饰符

  • i : 执行对大小写不敏感的匹配。
  • g : 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)
  • m : 执行多行匹配

正则表达式模式

括号

  • [abc] : 查找方括号之间的任何字符
  • [0-9] : 查找任何从 0 至 9 的数字
  • (x|y) : 查找任何以 | 分隔的选项

元字符

  • \d : 查找数字
  • \s : 查找空白字符
  • \b : 匹配单词边界
  • \uxxxx : 查找以十六进制数 xxxx 规定的 Unicode 字符
  • ^ : 表示开头
  • $ : 表示结尾

量词

量词只对前一个内容起作用

  • n+ : 匹配任何包含至少一个 n 的字符串
  • n* : 匹配任何包含零个或多个 n 的字符串
  • n? : 匹配任何包含零个或一个 n 的字符串
  • ‘+’ : 至少一个
  • ‘-’ : 0个
  • {n} :正好出现n次
  • {m,n} :出现m-n次
  • {m, } : m次以上
小练习

去除以下字符串开头与结尾空格

        str = "        he         llo       ";
        str = str.replace(/^\s*|\s*$/g,"");
        console.log(str);

he llo

示例

  • 测试输入数字是否为手机号码
    思路:
  1. 手机号共11位
  2. 第一位为1 :^1
  3. 第二位为3-9的数字 : [3-9]
  4. 第三位以后为0-9的9位数字: [0-9]{9}$
//注意^与$的使用
        var phone = "13553597193";
        var phoneReg = /^1[3-9][0-9]{9}$/
        console.log(phoneReg.test(phone));

true

  • 测试邮箱账号是否符合规则

思路看注释

       /*
        * 任意字母数字下划线   .任意字符数字下划线(可选,若有.后面至少有一个)  @  任意字母数字 . 任意字母(2-5位) . 任意字母(2-5位)
        *       \w                     (\.\w+)*                            @   [A-z0-9]      (\.[A-z]{2-5}){1-2}
        * 记得加上^与$
        */
       emailReg = /^\w{3,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/;
       var email = "165413@qq.com.cn";
       console.log(emailReg.test(email));

true

OK~

参考

菜鸟教程(https://www.runoob.com/)

MDN Web Docs(https://developer.mozilla.org)

等等

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值