JS之正则表达式

1.正则表达式

1.1定义及创建

  • 描述字符串的“构成模式”,经常被用于检查字符串是否符合预定的格式要求

  • ”按位“来描述规则

  • /^\d$/

    var regexp = /^\d{6}$/;//6位数字
    var regexp1 = new RegExp('^\\d{6}$');
    var regexp = /^m\d{6}n$/;//以m开头,n结尾,中间6位数字
    var str1='123456';
    regexp.test(str1); //test
    typeof regexp //object
    

创建

  • 使用/内容/的语法形式,可以快速创建正则表达式
  • 也可以使用new RegExp('内容')的形式,创建正则表达式。
  • 使用typeof运算符检查正则表达式的类型,结果是object
  • 两个正则表达是不会相等的,因为引用类型比较的是内存地址是否相等。

1.2元字符

- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B1D7dsKE-1630980317974)(http://img.mukewang.com/climg/60a26beb000167c219201080.jpg)]

  • 开头^结尾$

  • 使用new RegExp()写法,反斜杠需要多写一个\

  • //某快递公司运单号形式是这样的:123-4567-890,请使用正则表达式检查某字符串是否符合此格式
    			var regexp = /^\d{3}-\d{4}-\d{3}$/;
    			//只要没有写$,就会直接验证已写的部分,所以就算验证字符串后面乱写也没事
    			var str1 = '444-5555-000';
    			console.log(regexp.test(str1));
    			
    		//某产品秘钥形式 xxx-xxxx-xxx,其中x表示字母数字或者下划线
    			 var regexp = /^\w{3}-\w{4}-\w{3}$/;
    			 var str = 'abc-_ab_-123';
    			 console.log(regexp.test(str));
    
  • 字符转义:在特殊字符之前的反斜杠\表示下一个字符不是特殊字符,应该按照字面理解;最好就是在符号前面都加一个\

  • /^.$/ ->检查字符串是不是任意字符

  • /^\.$/ ->检查字符串是不是一个点

  • /^\\$/ ->检查字符串是不是一个\

扩展

  • 正则中使用竖线|表示或,表示只匹配指定几项之间的一项

  • x|y表示匹配x或y,也就是说两种中匹配一个,只要匹配到其中一个,就不会再匹配另外一个了
    var str = "ab";
    var reg = /a|ab/;
    console.log(reg.exec(str)); //a
    var str1 = "imoochtmlcccjs"
    var str2 = "jsimooccss"
    var str3 = "cssimoochtml"
    var reg = /html|css|js/
    console.log(reg.exec(str1)) // html
    console.log(reg.exec(str2)) // js
    console.log(reg.exec(str3)) // css
    //匹配纯数字或者纯字母的问题
    var str1 = '1111';
    var str2 = 'xuting';
    var str3 = '111xuting';
    var reg = /^\d+$|^[a-zA-Z]+$/
    

1.3方括号表示法

  • [xyz],可以创建一个字符集合,表示匹配方括号中的任意字符;

  • 方括号中也需要给特殊字符转义比如\.

  • 方括号中的字符之间的关系都是或者

  • /^[by]\d{7}$/表示第一位是一个字母,要么是b要么是y

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zSFplnaO-1630980317985)(http://img.mukewang.com/climg/60a274a800015b5619201080.jpg)]

  • //验证某字符串是否是5位字母,大小写均可
    /^[A-Za-z]{5}$/
    //验证某字符串是否是5位,且仅有小写字母、点构成
    /^[a-z\.]{5}$/
    //验证某字符串是否是4位小写字母,且最后一位不能是m字母
    /^[a-z]{3}[a-ln-z]$/   //漏掉m
    

1.4量词

- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fZrgqOab-1630980317988)(http://img.mukewang.com/climg/60a281f00001c18919201080.jpg)]

  • //手机号码
    /^1\d{10}$/
    //以字母开头,中间是任意位数字,最少一位,并以字母结尾
    /^[A-Za-z]\d+[A-Za-z]$/   // \d+表示至少一位数字
    //网站 www.(任意字符最少一位).com/.com.cn
    /^www\.\w+\.com(\.cn)?$/  // .cn可有可无
    

1.5修饰符

- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RpNnBUyO-1630980317994)(http://img.mukewang.com/climg/60a283a600013c8b19201080.jpg)]

  • var re = /m/gi; var re = new RegExp('m','gi');

1.6正则表达式的相关方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NHijQxeU-1630980317999)(http://img.mukewang.com/climg/60a31e0f00016e9519201080.jpg)]
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-scDsKC9m-1630980318000)(http://img.mukewang.com/climg/60a31e780001533019201080.jpg)]

  • +表示贪婪的,尽可能多的匹配

  • var regexp = /\d+/g;会进行逐条遍历,调用null之后又循环

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JrUOLFgc-1630980318002)(http://img.mukewang.com/climg/60a31f6000013b7c19201080.jpg)]

  • result[0]表示结果

1.7字符串的相关正则方法

- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fWN4wpZm-1630980318004)(http://img.mukewang.com/climg/60a3241f00011b1719201080.jpg)]

  • var str = 'abc123def4567'
    var res1 = str.search(/\d+/g);//3 类似于indexof方法;找不到为-1;全局匹配g在search中没用。
    var res2 = str.match(/\d+/g);//['123','4567'] 得到一个数组;找不到为null
    var res3 = str.replace(/[a-z]+/g,'*');//+连续匹配;将小写字母串都换成一个*   *123*4567
    var res4 = str.split(/\d+/g);//['abc','def',''];根据数字来将字符串拆分
    var res5 = str.split(/[ab]/);//既可以以a拆分又可以以b拆分
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值