js中的正则对象

1.数组的迭代方法

  • every

    • 语法:arr.every(function(数组元素,下标,当前循环的数组){ })

    • 作用:对数组元素进行判断,所有的判断都为true,结果才为true

    var arr = [78,65,43,89,12,67];
    //问:所有同学都及格了
    var isJ = arr.every(function(value){
        return value >= 60;
    });
    console.log(isJ);
    ​
    //需求:判断字符串是不是纯数字
    var str = "4732"; //[4.7.3.2]
    var isNumb = str.split("").every(function(value){
        return value >= 0 && value <= 9;
    });
    console.log(isNumb);
  • arr.some() : 对数组元素进行判断,只要有一个为真,结果就为真

2.正则对象

  • 正则对象:RegExp

  • 概念:提前定义的,用于检测字符串的逻辑公式 (正则表达式) /^1[3-9]\d{9}$/

  • 作用:验证字符串是否满足条件 登录注册

2.1 创建正则

  • 关键字new创建

     //1.new关键字创建  new RegExp(检索的表达式,修饰符)   ig
    var reg1 = new RegExp("[0-9]","ig");   //转义 
    console.log(reg1); // /[0-9]/gi
  • 字面量创建

     //2.字面量创建 
    var reg2 = /[0-9]/ig;
    console.log(reg2);  //  /[0-9]/gi
  • 区别

    //3.区别
    var str = "web";
    var reg3 = /str/ig;
    console.log(reg3);  //字面量创建正则没有变量的概念,   /str/gi
    ​
    ​
    var reg4 = new RegExp(str,"ig");
    console.log(reg4);  ///web/gi

2.2 修饰符

  • g : global 进行全局的匹配

    //1.g  : global  执行一个全局的匹配
    var str = "j1a2v3u4i5j";
    var reg1 = /[0-9]/;
    var reg2 = /[0-9]/g;
    console.log(str.replace(reg1,"*")); //j*a2v3u4i5j
    console.log(str.replace(reg2,"*")); //j*a*v*u*i*j
  • i:ignore case 进行不区分大小写的匹配

    //2.i : ignore case  : 执行一个不区分大小写的匹配
    var str = "he is girl,He is girl";
    var reg3 = /he/g;
    var reg4 = /he/gi;
    console.log(str.replace(reg3,"she")); //she is girl,He is girl
    console.log(str.replace(reg4,"she")); //she is girl,she is girl

2.3 元字符

2.3.1 元字符代表单个符号

  • .

    . : 匹配除换行符以外的任意字符

    //1)  . : 匹配除换行符以外的任意字符
    var str = "\nab\ncde";
    var reg = /./
    console.log(reg.exec(str)); //["a", index: 1]
    
    //web____ujiuye
    var str = "web0322ujiuye";
    var reg = /web....ujiuye/;
    console.log(reg.exec(str)); //"web0322ujiuye"
    console.log(reg.exec("web03221ujiuye")); //null
  • []

    [] : 匹配字符集中的任意一位字符 [a-z]:匹配小写字母 [a-zA-Z]:匹配字母 [0-9]:匹配数字

    [^]: 匹配除字符集中的任意一位字符

    //2). [] : 匹配字符集中的任意一位字符  [a-z]:匹配小写字母  [a-zA-Z]:匹配字母 [0-9]:匹配数字
    var reg = /[@#$%^&*]/;
    var str = "str#fd@!";
    console.log(reg.exec(str)); //["#", index: 3]
    
    // [^]: 匹配除字符集中的任意一位字符
    var reg = /[^0-9A-Z]/;  //匹配除数字和大写字母外的任意字符
    var str = "45243SASA#fdsfs";
    console.log(reg.exec(str)); //["#", index: 9]
  • \d:匹配数字 \D:匹配非数字

    //\d:匹配数字 \D:匹配非数字
    var str = "q1w2";
    var reg1 = /\d/;
    var reg2 = /\D/;
    console.log(reg1.exec(str)); //"1"
    console.log(reg2.exec(str)); //"q"
  • \w:匹配数字字母下划线 \W:匹配非数字字母下划线

    //\w:匹配数字字母下划线  \W:匹配非数字字母下划线 
    var str = "w2";
    var reg1 = /\w/;
    var reg2 = /\W/;
    console.log(reg1.exec(str)); //"w"
    console.log(reg2.exec(str)); //null
  • \s:匹配空格 \S:匹配非空格

    //\s:匹配空格  \S:匹配非空格
    var str = "          hello world               ";
    console.log(str.replace(/\s/g,"")); //helloworld
  • ^ : ^a 以a开头 $ : a$ 以a结尾

    //6.  ^ : ^a 以a开头    $ : a$  以a结尾
    var str = "12345642432rwrewrw";
    var reg = /^\d\d\d\d\d\d$/;
    console.log(reg.exec(str)); //null

2.3.2 元字符(量词)

  • ? : 字符? 匹配前面的字符0次或1次

    // ? : 字符? 匹配前面的字符0次或1次
    var str = "https://www.jd.com"; 
    var reg = /^https?:\/\/www\.jd\.com$/;  //\转义,让符合只是一个字符,失去本身的意义
    console.log(reg.exec(str)); //"["http://www.jd.com""
  • * : 字符* 匹配前面的字符0次或多次(连续的)

    //2) * : 字符*  匹配前面的字符0次或多次(连续的)
    var str = "aasaaaaa3";
    var reg = /a*/;
    console.log(reg.exec(str)); //"aa"
  • + : 字符+ 匹配前面的符号至少1次

    //3) + : 字符+ 匹配前面的符号至少1次
    var str = "https://www.taobao.com";  //匹配网址   163.com
    var reg = /^https?:\/\/www\.\w+\.com$/;
    console.log(reg.exec(str));
  • {n,m} : a{n,m} 匹配前面符号最少n次,最m次

    //4) {n,m} : a{n,m} 匹配前面符号最少n次,最m次
    //验证QQ
    var reg = /^[1-9]\d{4,10}$/;   //手机号
    console.log(reg.exec("0123435435435353"));
    
    //{n} : 匹配n次
    //验证银行卡密码
    var reg = /^\d{6}$/;
    
    //{n,} : 匹配最少n次,最多无限
    var str = "aaa1321321";
    var reg = /a{5,}/;
    console.log(reg.exec(str)); //null
    
    //注意:量词之间不能同时使用   {} + ? *
    console.log(/.?{1,2}/); //报错

2.4 分组与 2|

  • |

    // | 或
    var str = "http://www.suibian.cn";
    var reg = /^https?:\/\/www\.\w{2,}\.(com|net|cn|org|cc|edu)$/i;
    console.log(reg.exec(str));  //"http://www.suibian.cn"
  • () 分组

    //() 分组
    var str = "hello world";
    var reg = /(hello) (world)/;
    console.log(reg.exec(str));  //["hello world", "hello", "world"]
    console.log(RegExp.$1);  //获取第一个分组的内容
    console.log(RegExp.$2);  //获取第二个分组的内容
    console.log(str.replace(reg,"$2 $1")); //world hello

2.5 前瞻后顾

  • (?:) : 非获取匹配

    var str = "http://www.suibian.cn";
    var reg = /^https?:\/\/www\.\w{2,}\.(com|net|cn|org|cc|edu)$/i;
    console.log(reg.exec(str));  //["http://www.suibian.cn", "cn"] 会获取到括号(分组)中的内容
    
    var str = "http://www.suibian.cn";
    var reg = /^https?:\/\/www\.\w{2,}\.(?:com|net|cn|org|cc|edu)$/i;
    console.log(reg.exec(str));  //["http://www.suibian.cn"] 不会获取到括号(分组)中的内容
  • (?=) : 前瞻 正向肯定预查 后面必需是什么

    //1.(?=) : 前瞻,a(?=匹配条件) : a后面必须是什么
    var str = "w2de";
    var reg = /[a-z](?=[a-z])/;
    console.log(reg.exec(str));  //["d", index: 2]
    
    //需求:验证用户名,必须是数字和字母组成  {5-10}
    //(?=):必须    (?=.*\d.*):必须有数字    (?=.*[a-zA-Z].*)
    //.*  匹配除换行以外的任意0,多次    \d
    var reg = /(?=.*\d.*)(?=.*[a-zA-Z].*)^[0-9a-zA-Z]{5,10}$/;
    var str = "fd32fs";
    console.log(reg.exec(str));
  • (?!) : 负前瞻 正向否定预查 后面不能是什么

    //2.(?!) : 负前瞻  a(?!匹配条件) : a后面不能是什么
    var str = "w2de";
    var reg = /[a-z](?!\d)/;
    console.log(reg.exec(str));  //["d", index: 2]
    
    //需求:验证用户名,必须是数字和字母组成  {5-10}
    // /^[a-zA-Z]+$/ :纯字母
    var reg = /(?!^[a-zA-Z]+$)(?!^\d+$)^[0-9a-zA-Z]{5,10}$/;
    var str = "eq1321321";
    console.log(reg.exec(str));
    
  • 后顾

     //3.(?<=) : 后顾 (?<=匹配条件)a : a的前面必须是什么
    var str = "w2de34";
    var reg = /(?<=\d)[a-z]/
    console.log(reg.exec(str));
    
    //4.(?<!) : 负后顾   (?<!匹配条件)a: a的前面不能是什么
    var str = "w2de34";
    var reg = /(?<![a-z])\d/;
    console.log(reg.exec(str)); //["4", index: 5]
  • 中文

    //5.中文
    var reg = /[\u4e00-\u9fa5]+/;
    var str = "jfd我是小可爱u2i432";
    console.log(reg.exec(str));

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
正则表达式(Regular Expression)是用于匹配字符串字符组合的模式。JavaScript 使用 RegExp 对象来创建和操作正则表达式正则表达式由一个模式和可选标志组成,模式是由正则表达式语言定义的字符串。 例如,可以使用正则表达式来匹配一个字符串的数字: ``` let str = "The price of the product is $20"; let pattern = /\d+/; let result = pattern.exec(str); console.log(result[0]); // 输出 20 ``` 在上面的例子,`\d+` 是一个模式,用于匹配一个或多个数字。使用 `exec()` 方法来执行匹配操作,并返回一个包含匹配结果的数组。在这个例子,数组的第一个元素是匹配到的字符串 `20`。 除了 `exec()` 方法之外,还可以使用 `test()` 方法来判断一个字符串是否匹配某个模式: ``` let str = "The price of the product is $20"; let pattern = /\d+/; let result = pattern.test(str); console.log(result); // 输出 true ``` 在上面的例子,`test()` 方法返回一个布尔值,用于判断字符串是否匹配模式。在这个例子,字符串包含数字,所以返回结果为 true。 除了 `\d+`,正则表达式还可以使用很多其他的模式来匹配不同的字符组合。比如: - `.` 匹配除了换行符以外的任何字符 - `^` 匹配字符串的起始位置 - `$` 匹配字符串的结束位置 - `[]` 匹配一个字符集合 - `()` 标记一个子表达式,可以在后续的操作引用 - `*` 匹配前面的元素零次或多次 - `+` 匹配前面的元素一次或多次 - `?` 匹配前面的元素零次或一次 - `{n}` 匹配前面的元素恰好 n 次 - `{n,}` 匹配前面的元素至少 n 次 - `{n,m}` 匹配前面的元素至少 n 次,但不超过 m 次 正则表达式是一门独立的语言,因此学习正则表达式需要一定的时间和精力,但是一旦掌握了正则表达式,可以大大提高字符串处理的效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值