JavaScript 正则表达式

目录

检查方法

其他方法

量词

转义字符

邮件的正则


基础

作用:计算机可根据正则表达式来检查一个字符串是否符合规则,并将字符串中符合规则的内容提取出来

语法:

  1. 使用构造函数创建

    let 变量 = new RegExp("正则表达式" , "匹配模式"); // 匹配模式可以是 i (忽略大小写),g (全局匹配模式)

  2. 使用字面量创建

    let 变量 = / "正则表达式" / "匹配模式";

检查方法

格式:test();

let res = new RegExp("a");

let res1 = new RegExp("A","i");

console.log(res.test("abc")); // 检测"abc"中是否有a, (true)

console.log(res1.test("abc")); // 检测"abc"中是否有A且忽略大小写 (true)

实例:

  1. 创建一个正则表达式,检查一个字符串中是否有a或b

    let res = / a | b /; // 使用 | 表示或的意思

    let res = / [ab] /; // [ab] == a | b

  2. 创建一个正则表达式,检查一个字符串中是否有字母

    let res = / A - z /;

  3. 创建一个正则表达式,检查一个字符串中是否有 abc 或 adc 或 aec

    let res = / a [bde] c /;

  4. 创建一个正则表达式,检查一个字符串中是否有除了ab以外的字符

    let res = / [ ^ab ] /;

其他方法

  1. search()

    作用:可以搜索字符串中是否含有指定内容,如果搜索到指定内容,则会返回第一次出现的索引,如果没有搜索到则返回-1;它可以接收一个正则表达式,然后会根据正则表达式去检索字符串

    注意点:search()只会查找第一个,即使设置全局匹配也没用

    例:搜索字符串中是否有 abc 或 adc 或 aec

           let res = "hello abc aec adc";

           console.log(res.search(/ a [bde] c /)); // 6 ( abc中a的索引为6)

  2. match()

    作用:根据正则表达式,从一个字符串中将符合条件的内容提取出来

    注意点:①默认情况下match()只会找到第一个符合要求的内容,找到后就停止检索

                  ②可以设置正则表达式为全局匹配模式,这样就会找到全部符合要求的内容

                  ③match()会将匹配到的内容封装到一个数组中返回,即使只查到一个结果

                     例:let str = "1a2b3c4d5E6F7G";

                            console.log(str.match(/ [a - z] / ig)); // abcDEFG

                            console.log(str.match(/ [A - z] / g)); // abcDEFG

  3. replace()

    作用:可以将字符串中指定内容替换为新的内容

    参数:1. 被替换的内容   2. 新的内容

    注意点:默认只会替换一个

    例:let res = "123abcABC";

           conlose.log(res.replace(/ a-z / ig,"&")); // 将res中的小写字母替换为&

           conlose.log(res.replace(/ A-z / ig,"")); // 将res中的字母删除(参数2引号内什么都不写)

  4. split()

    作用:将一个字符串拆分为一个数组,方法中可以传递一个正则表达式,这样方法会根据正则表达式去拆分字符串

    注意点:split()即使不指定全局匹配,也会全部拆分

    例:let res = "1a2b3c4d5E6F7D";

           console.log(res.split(/ A - z /)); // 根据任意字母将字符串拆分为一个数组

量词

作用:通过量词可以设置一个内容出现的次数

注意点:量词只对它前边的一个内容起作用

  1. {n} 正好出现n次

    let res = / a{6} /; // 查找a正好出现6次的字符串

  2. {m,n} 出现m到n次

  3. {m, } 出现m次以上

  4. a+ a至少出现1次,相当于{1, }

  5. a* a出现0次或多次,相当于{0, }

  6. a? a出现0次或1次,相当于{0,1}

  7. ^a 检查字符串是否以a开头

    let res = / ^a /; // 此处的^与 [ ] 中的^作用不同,[ ] 中的^是查找不含某个字符的内容

  8. a$ 检查字符串是否以a结尾

    let res = / a$ /;

  9. ^和$同时使用则为查找只有一个a,且a是开头又是结尾

    let res = / ^a$ /;

转义字符

格式:\

注意点:使用构造函数时,由于参数是一个字符串,所以要想用转义字符,则其格式为:\\

例:

  1. 检查一个字符串中是否有点 .

    let res = / \ . /;

    let res = new RegExp(" \ \ . ");

  2. 检查一个字符串中是否有 \

    let res = / \ \ /;

    let res = new RegExp(" \ \ \ ");

其他:

  1. \w 任意字母、数字、下划线_,相当于[A-z 0-9 _ ]

  2. \W 除了字母、数字、下划线_,相当于[ ^ A-z 0-9 _ ]

  3. \d 任意数字,相当于[0-9]

  4. \D 除了数字,相当于[ ^ 0-9 ]

  5. \s 空格

    例:

          接受一个用户输入的用户名,且删除前后的空格,中间的空格不删除

          let str = prompt("请输入你的用户名:"); // 此时输入: hello world (前中后都有空格)

          str = str.replace(/^\s*/,""); // 去除开头的空格

          str = str.replace(/\s*$/,""); // 去除结尾的空格

          str = str.replace(/^\s* | \s*$/g,""); // 去除开头和结尾的空格

          注意点:去掉空格就是使用""来替换空格

  6. \S 除了空格

  7. \b 单词边界

    例:

    1. 创建一个正则表达式,检查一个字符串中是否有含有单词child

      let res = /\bchild\b/;

      console.log(res.test("hello children")); // false

    2. 创建一个正则表达式,检查一个字符串中是否有含有child

      let res = /child/;

      console.log(res.test("hello children")); // true

  8. \B 除了单词边界

邮件的正则

格式:

hello .nihao @ abc .com .cn

任意字母数字下划线     .任意字母数字下划线    @    任意字母数字    .任意字母(2-5位)    .任意字母(2-5位)

\w{3,}                             ( \ . \w+)*                      @    [A-z0-9]+            (\ . [A-z]{2-5}){1,2}

例:

      let emailReg = /^\w{3,}( \ . \w+)*@[A-z0-9]+(\ . [A-z]{2-5}){1,2}$/;    // 前后分别加上 ^ 和 $,表示一个完整的邮件

      let email = "abc@abc.com.cn";    // true

      let eamil1 = "abc@abc.com.123";    // false,若前后不加^ 和 $,则为true,即只要检测到邮件就返回true

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_L...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值