最近研究了正则的前后预查,感觉好玩就分享一下,文章最后有意外的惊喜哦。

前置约束和后之约束都属于只匹配不捕获(非捕获族)。

前置约束用于判断所匹配的格式是否在另一个确定的格式之后,反知,后之约束用于判断所匹配的格式是否在另一个格式之前。

符号 描述
?= 前置约束-存在
?! 前置约束-排除
?<= 后置约束-存在
?<! 后置约束-排除

1 、前置约束 ?=(存在)

比如 我们先想匹配red字符串,但是希望后面跟的是shiny的字符串。我们应该这样写 /(red)(?=shiny)/

/(red)(?=\sshiny)/=>'red shiny red black'

解释一下 /(red)(?=\sshiny)/ 为什么是\sshiny,因为red和shiny之间有一个空格所以加了一个\s 是空格匹配

2、前置约束?!(排除)

比如我们想匹配red字符串,但是后面不跟black字符串,那么就应该这样写/(red)(?!\sblack)/

/(red)(?!\sblack)/=>'red shiny red black'

3、后置约束?<=(存在)

比如我们现在想匹配red字符串,但是它的前面必须是shiny字符串,那么我们就应该这么写/(?<=\shiny\s)(red)/

/(?<=\shiny\s)(red)/=>'red shiny red black'

4、后置约束?<!(排除)

比如我们现想匹配red字符串,但是它的前面不能是black字符串,那么我们用该这样写/(?<=!black\s)red/

/(?<!\black\s)(red)/=>'red shiny red black red'

上面的示例是不是很简单,但是告诉大家一个很不好消息尤其是移动端开发者,有些浏览器不支持这种写法,我是在工作中遇见的,还有一个不得不吐槽的问题就是ios的safari不止"-"这个字符写正则的时候大伙们注意一下

转载于:https://juejin.im/post/5c20a8ccf265da616a47abef

js关于正则的前后关联约束(前后预查)相关推荐

  1. 正则判断 空格_js关于正则的前后关联约束(前后预查)

    最近研究了正则的前后预查,感觉好玩就分享一下,文章最后有意外的惊喜哦. 前置约束和后之约束都属于只匹配不捕获(非捕获族). 前置约束用于判断所匹配的格式是否在另一个确定的格式之后,反知,后之约束用于判 ...

  2. js input 正则保留2位小数中文拼音输入问题 + 限制输入整数的方案

    js input 正则保留2位小数中文拼音输入问题 + 限制输入整数的方案 problem 背景 element ui el-input组件 原生input事件 需求 限制输入框的输入 只允许输入数字 ...

  3. html正则表达式怎么写用户名非空,js通过正则匹配没有内容的空标签

    js 如何正则匹配没有内容的空标签并移除掉? 例如 等等 正则 /]*?)?>\s*?/ig html=' '+ '\n '+ '\n'+ '\n '+ '\n '+ '\n '+ '\n'+ ...

  4. 正则匹配数字和字母php,用php与js实现正则匹配数字和字母组合的密码

    这次给大家带来用php与js实现正则匹配数字和字母组合的密码,用php与js实现正则匹配数字和字母组合密码的注意事项有哪些,下面就是实战案例,一起来看一下. 本文实例讲述了正则匹配密码只能是数字和字母 ...

  5. js匹配正则匹配手机号/固话/带括号区号固话

    js匹配正则匹配手机号/固话/带括号区号固话 var test = document.getElementsByTagName('body')[0].outerHTML; var array =tes ...

  6. php正则银行卡号,JS使用正则控制用户输入银行卡号及格式化

    //js正则实现用户输入银行卡号的控制及格式化 function formatBankNo (BankNo){ if (BankNo.value == "") return; va ...

  7. JS常见正则方法整理

    JS常见正则方法整理 目录 文章目录 前言 1. 使用测试方法 - `test` 2. 同时用多种模式匹配文字字符串 - `x|y` 3. 匹配时忽略大小写 - `/x/i` 4. 提取匹配项 - ` ...

  8. 在登录页面中js进行正则验证电话号码和邮箱地址,并使用ajax进行用户ID的数据库验证

    本文说的是在登录页面中使用js进行正则验证并使用ajax进行用户ID的数据库验证,另外也加入键盘监听. 先看一下登录的jsp页面代码 <%@ page language="java&q ...

  9. JS 使用正则匹配字符串中所有大括号包含的数据,转换成数组形式

    JS 使用正则匹配字符串中所有大括号包含的数据,转换成数组形式 .match(/{[^}{]*?}/g)

最新文章

  1. thinkbook14 2021版有两个显卡
  2. 湘潭计算机职业技术学校专业介绍,湘潭计算机职业技术学校介绍
  3. SCN Headroom与时光倒流到1988年的Oracle数据库
  4. 大促场景下云通信高可用、稳定性实战
  5. android 获取图片像素密度,android 获取屏幕的密度和像素 点
  6. 如何读懂并写出装逼的函数式代码 1
  7. uml 时序图_UML各种图总结:
  8. 韩顺平php视频笔记35 php运行过程
  9. 10大Go语言开源项目推荐
  10. ecshop ectouch 不支持html,ECTouch操作使用的常见问题整理(不定期更新)
  11. 利用AD13设计PCB的问题总结21-30
  12. c#锁定Excel工作表和单元格
  13. 李飞飞、吴恩达、Bengio等人的15大顶级深度学习课程(转)
  14. 基于MATLAB 的X-CT图像重建计算机仿真实验研究实验
  15. OpenGL学习笔记--配置VS环境
  16. java求亲密数,怎么写更好更快?
  17. 3.韦东山嵌入式学习笔记-烧写工具
  18. Jquery 模糊匹配ID
  19. DVFS--动态电压频率调整
  20. 人工智能时代,普通的我们如何提升自己的核心竞争力

热门文章

  1. 墨刀未能成功读取服务器数据,墨刀的使用
  2. php获取目录文件 排序输出,php实现对文件夹目录中的文件进行排序的方法
  3. 四十一、文件的物理结构(上)
  4. 自然语言处理-Word2Vec
  5. 弱监督语义分割--Object Region Mining with Adversarial Erasing
  6. 视频目标检测--Flow-Guided Feature Aggregation for Video Object Detection
  7. mysql存储引擎6_Mysql各种存储引擎对比总结
  8. Linux下的vim文本替换,Linux下文本的vim文本替换
  9. Linux怎么关闭ssh和ftp服务,linux ftp启用和停用及vsftpd安装 ssh 启用和停用命令及ssh的安装...
  10. 插件制作教程 php,typecho插件编写教程(二):写一个新插件