美文网首页
正则表达式:?= ?: ?!

正则表达式:?= ?: ?!

作者: 蘑菇酱960903 | 来源:发表于2018-03-23 21:44 被阅读0次
表达式 名称 描述
?=exp 正向前瞻 零宽度,断言出现的位置后面能匹配exp,则匹配成功,匹配不占据匹配长度,非捕获
?!exp 负向前瞻 零宽度,断言出现的位置后面不能匹配exp,则匹配成功,匹配不占据匹配长度,非捕获
?:exp 正向前瞻 非捕获性分组,断言出现位置后面匹配exp,占据查询的匹配长度

零宽度:表示只匹配位置,不匹配字符

栗子一:

str.replace( /\B(?=(?:\d{3})+$)/g, ',' );

分析:
\B 或者 \b 匹配到的是一个位置,没有字符,
\B:表示非单词边界
\b:表示单词边界
之后了解?= ?:之间的差别
?=exp 表示零宽度正预测先行断言,简单来说,就是在断言出现的位置后面必须匹配exp,否则匹配失败,当匹配成功,也不会占据查询长度(也就是下一个查询的index与exp匹配成功的长度无关)
?:exp 表示非捕获性分组,若匹配成功,不会存在匹配成功的分组当中,但是会占据查询长度。
所以这一个正则的匹配思路为:
栗子:
'1234567'.replace(/\B(?=(?:\d{3})+$)/g, ';') // 1,234,567
先匹配第一个非单词边界(1和2之间),然后?=预测后面的内容为\d{3}三个连续的数字,+做循环,不断检测三个连续数字,(234 567),当数字匹配完之后,开始检查是否为字符串结尾,若为结尾,则匹配成功;接着从第二个单词边界开始(2和3之间),……
最后查询结束符合匹配的就在1和2之间 4和5之间

栗子二:

/*将字符串中除了div和p标签之外替换成p*/
var input = '<div class="beautiful">,<p class="provocative">,<span class="sexy">,<h1 class="attractive" id="header">,</h1>,</span>,</p>,</div>';
var output = input.replace(/<(\/?)(?!div|p|\/p|\/div)(?:[a-z0-9]+)(.*?)>/g, '<$1p$2>');
console.log(input);
console.log(output);
//<div class="beautiful">,<p class="provocative">,<span class="sexy">,<h1 class="attractive" id="header">,</h1>,</span>,</p>,</div>
//<div class="beautiful">,<p class="provocative">,<p class="sexy">,<p class="attractive" id="header">,</p>,</p>,</p>,</div>

分析:
以<开始,可匹配/或者不匹配(有?,?表示0或以上),后面不为div或p或/p或/div(有?! 表示负向前瞻),后面为多个数字或者小写字母,但是不捕获,占据位置,最后可有可无的多个任意字符

相关文章

  • Linux命令行与Shell脚本编程大全-shell正则表达式

    本章内容: 定义正则表达式 了解基本正则表达式 扩展正则表达式 创建正则表达式 定义正则表达式 正则表达式是你定义...

  • 正则相关

    正则表达式基本语法 正则表达式常见字符 正则表达式特殊字符 正则表达式数量词 正则表达式边界匹配 正则表达式逻辑或...

  • 正则表达式系列-1

    正则表达式系列-1正则表达式系列-2正则表达式系列-3正则表达式系列-4 什么是正则表达式 正则表达式就是用事先定...

  • 正则表达式

    正则表达式 - 教程正则表达式 - 简介正则表达式 - 语法正则表达式 - 元字符正则表达式 - 运算符优先级正则...

  • Python基础入门 - 正则表达式与综合实战

    1. 初识正则表达式 1.1 介绍 步骤介绍正则表达式入门及应用正则表达式的进阶正则表达式案例 1.2 正则表达式...

  • Java正则表达式参考

    Java正则表达式入门 java正则表达式应用 深入浅出之正则表达式(一) 深入浅出之正则表达式(二) 正则表达式...

  • 正则表达式

    正则表达式 正则表达式就是记录文本规则的代码 正则表达式常用的元字符 正则表达式常用的限定符 正则表达式举例:这里...

  • Python爬虫(十)_正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

  • python正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

  • 正则表达式

    了解正则表达式基本语法 能够使用JavaScript的正则对象 正则表达式简介 什么是正则表达式 正则表达式:用于...

网友评论

      本文标题:正则表达式:?= ?: ?!

      本文链接:https://www.haomeiwen.com/subject/hzhfcftx.html