正则匹配

1.test在全局匹配下,连续的执行会报错,例如:

var reg = /a/g
reg.test('a')  //true
reg.test('a')  //false

原因是lastIndex导致出错,但是具体是为啥,我还没搞懂,先留着,以后弄懂了再补上。不过总而言之,test只是匹配是否存在,没必要用全局g,不用就是了。

2.贪婪.*和非贪婪.*?

简单理解就是,尽可能多和尽可能少的匹配。当匹配的值比较长和复杂的时候,有可能会出现重复尾部匹配的情况,非贪婪匹配能更精准的匹配。比如:

'abbb4bbb4'.match(/a.*4/)  // ['abbb4bbb4']
'abbb4bbb4'.match(/a.*?4/)  // ['abbb4']

3.?:?=?!

?:作用是在分组匹配的时候,不占用一个组位。实用性的话,我想了半天也没想出什么地方用比较合适,只能举一个大概会用到的例子。

//匹配家庭号码
'07956533869'.replace(/(\d{3,4})(\d{7,8})/,'$1')  
//'0795' 返回的是区号
'07956533869'.replace(/(?:\d{3,4})(\d{7,8})/,'$1')  
//'6533869' 返回的是电话号码

?=?!就是在匹配的时候,需要匹配该字符存在或不存在,但是不需要后续的操作

'12px'.match(/\d+(?=px)/) //['12']
'12px 13rem'.match(/\s\d+(?!px)/)  //[' 13']

//这个两个规则只能在后面匹配,不能在前面匹配,这我不知道为啥
'12px'.match(/(?=\d)px/) //null
'12px 13px'.match(/(?!\d)px/)  //'px'
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、示例 匹配网址url 匹配手机号码 匹配固话 匹配身份证号码 匹配密码 匹配一年的12个月 匹配一个月的31天...
    喜宝_c72d阅读 5,443评论 0 0
  • 正则表达式匹配规则 Python 的 re 模块 在 Python 中,我们可以使用内置的 re 模块来使用正则表...
    ztfdeveloper阅读 2,744评论 0 0
  • 在编写正则之前,需要罗列出所有可能存在的情况 协议, 分别有 https,http,ftp 出现的次数是 0-1 ...
    小楼听冬雨阅读 25,076评论 1 1
  • 今天用到了一个 js验证 输入手机号的,但要有一个万能的 400 800 等座机 移动联通小灵通手机号的正则式: ...
    eyuxiog阅读 3,446评论 0 0
  • 121天 今日金句 For though elated by his rank, it did not rende...
    123逍遥游阅读 1,724评论 0 0

友情链接更多精彩内容