首页 > 其他 > 详细

正则表达式

时间:2020-10-24 22:55:14      阅读:32      评论:0      收藏:0      [点我收藏+]

先行断言

先行断言(?=表达式) 表达匹配表达式前面的位置

var str = ‘I am siqang while u are reading‘;
    var reg = /\b\w+(?=\q)/g;
    console.log(str.match(reg)); //si
//表示匹配表达式q前面的字符

注意:先行断言的执行步骤是:先从要匹配的字符串中的最右端找到表达式第一个然后 再匹配其前面的表达式,若无法匹配则继续查找第二个ing 再匹配第二个 ing前面的字符串,若能匹配则匹配

后发断言(?<=表达式) 表示匹配表达式后面的位置

var str = ‘I am siqang while u are reading‘;
    var reg = /(?<=\q)\w+/g;
    console.log(str.match(reg)); //ang
//表达匹配表达式q后面的字符

注意:后发断言跟先行断言恰恰相反 它的执行步骤是这样的:先从要匹配的字符串中的最左端找到第一个表达式,然后再匹配其后面的表达式,若无法匹配则继续查找第二个abc 再匹配第二个abc后面的字符串,若能匹配 则匹配

负向零宽断言

负向零宽先行断言(?!表达式) 表示后面跟的不是表达式的位置

var str = ‘I am siqang while u are reading‘;
    var reg = /\b\w*\i(?!n)\w*\b/g;
    console.log(str.match(reg)); //siqang和while" 负向零宽先行断言 
    //表示匹配字符 i 后面不是字符 n 的位置

 

负向零宽后发断言为 (?<!表达式)  表示前面跟的不是表达式的位置

var str = ‘I am siqang while u are reading‘;
    var reg = /\b\w*\i(?<!n)\w*\b/g;
    console.log(str.match(reg));//siqang和while和reading 负向零宽后发断言

主要看这两篇 https://www.iteye.com/blog/hooopo-407062

https://www.cnblogs.com/macq/p/6597366.html

注释

 (?#注释的内容)

 贪婪与懒惰

 

var greedy = ‘Greedy can be dangerous at times‘
    var reg1 = /a.*a/;
    console.log(greedy.match(reg1));

尽可能最长的从a匹配到最后一个a的字符串 贪婪性质    .*

var greedy = ‘Greedy can be dangerous at times‘
    var reg1 = /a.*?a/;
    console.log(greedy.match(reg1));

尽可能最短的从a到下一个a的字符串 懒惰特性  .*?

强推b站那个视频 15分钟速成正则表达式  适合新手看

?在正则表达式叫非贪婪模式

处理选项

IgonreCase 忽略大小写 (简写i):匹配时不区分大小写

Multiline 多行模式 (简写m):更改^和$的含义,使它们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配。(在此模式下,$的精确含意是:匹配\n之前的位置以及字符串结束前的位置.)

Singleline 单行模式 (简写s):更改 . 的含义,使它与每一个字符匹配(包括换行符\n)

IgonrePatternWhitespace 忽略空白:忽略表达式中的非转义空包并启用由#标记的注释

ExplicitCaptrue 显示捕获:仅捕获已被显示命名的组

 

正则表达式

原文:https://www.cnblogs.com/xiao-7/p/13869649.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!