首页 > 其他分享 >正则零宽断言的理解

正则零宽断言的理解

时间:2023-11-20 15:57:12浏览次数:21  
标签:console 断言 正则 groups 匹配 零宽

正则匹配中,除了文本的匹配外,还有位置匹配。

因为位置匹配不会匹配任何实际的文本,只是匹配文本中的位置,所以也称为锚点(Anchors)、零长度断言 或者 零宽断言 (Zero-Width Assertions)。
结合这几个名字,这个概念的含义已经很明显。

零宽断言是一种零宽度的匹配,它匹配的内容不会保存到匹配结果中,也不会占用index宽度,最终匹配的结果只是一个位置

简单的说,它用于查找在某些内容之前或之后的东西(但返回结果并不包括这些内容)

JavaScript提供了如下的零宽断言:

零宽断言 意义
^ 匹配输入的开始。
$ 匹配输入的结束。
\b 匹配一个词的边界。
\B 匹配一个非单词边界。
(?=p) 肯定顺序环视
(?!p) 否定顺序环视
(?<=p) 肯定逆序环视
(?<!p) 否定逆序环视

js的负向零宽断言是ES2018才支持的,同时支持的还有,命名分组和dotAll(.能匹配换行符)

Lookbehind assertion: (?<=...), (?<!...) (负向零宽断言) chrome 62 safari 16.4 

function getPrice(label) {
    return /(?<=\$)\d+(?:\.\d*)?/.exec(label)?.[0];
}

getPrice("$10.53"); // "10.53"
getPrice("10.53"); // undefined

ES2018同时支持的还有,命名分组和dotAll(.能匹配换行符)

Named capture groups(命名分组捕获) chrome 64 safari 11.1 

const t = '2020-01-23'.match(/(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/)
console.log(t.groups.year)
console.log(t.groups.month)
console.log(t.groups.day)

 

参考:

JavaScript 与正则表达式 -- 位置匹配

JavaScript 正则之零宽断言详解|8月更文挑战

【正则表达式系列】零宽断言

标签:console,断言,正则,groups,匹配,零宽
From: https://www.cnblogs.com/mengff/p/17844135.html

相关文章

  • 学习正则表达式,有什么好用的工具?
    工具在线地址:​​https://amd794.com/regularGraph​​工具演示视频:​​https://www.bilibili.com/video/BV17y4y1w7Qi/​​正则表达式是一种强大的模式匹配工具,常用于文本处理和字符串操作。随着互联网的发展,正则表达式在线工具也逐渐成为了程序员和文本处理工作者不可或缺的......
  • python数据提取-正则表达式
    1.正则表达式 (1)re的findall()方法importrer_list=re.findall('AB','ABCABDDGAAGDSGSDG')#后匹配前print(r_list)#输出:['AB','AB'] (2)也可以写作下面importrepattern=re.compile('AB')r_list=pattern.findall('ABCABDDGA......
  • Notepad++正则表达式语法
    转自:https://www.cnblogs.com/kekec/p/5255475.html注意:Notepad++正则表达式字符串最长不能超过69个字符\转义字符如:要使用“\”本身,则应该使用“\”\tTab制表符注:扩展和正则表达式都支持\r回车符CR注:扩展支持,正则表达式不支持\n换行符LF注:扩展支持,正......
  • 正则表达式工具:强大且高效的模式匹配利器
    https://www.cnblogs.com/Amd794/p/17813641.htmlhttps://amd794.com/regularGraph正则表达式,或称为regex,是一种强大的文本处理工具,它以特定的字符串模式匹配为基础,并有能力进行复杂的搜索、编辑和操作。尽管其语法可能初看起来复杂,但掌握正则表达式将使您能够以高效且准确的方......
  • 正则表达式
    原文链接:https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1700215正则表达式,又称规则表达式,(RegularExpression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a到z之间的字母)和特殊字符(称为"元字符"),是计算机科学的一个概念......
  • 正则表达式验证
    usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Linq;usingSystem.Text.RegularExpressions;namespaceYiSha.Util{publicstaticclassValidatorHelper{#region验证输入字符串为数字(带小数)///<summa......
  • 你的输入格式不对???简单明了直接用的正则表达式,值得收藏
    正则表达式一直是一个比较难以理解和学习的知识,很多开发人员对于正则表达式也是现学现用,用的时候去临时查一个。这篇文章是我用两天时间总结出来的常用正则表达式,涵盖了几乎日常所有常见的校验逻辑,掌握这些正则表达式,每天比别人少些200行代码。整数或者小数^[0-9]+\.{0,1}[0-9]{0......
  • 正则表达式中的小括号"()"。是代表分组的意思。 如果再其后面出现\1则是代表与第一个
    以下代码的执行后,str的值是:varstr="Helllloworld";str=str.replace(/(l)\1/g,'$1');AHeloworldBHelloworldCHellloworldDHelllloworld正确答案:B对于正则表达式/(l)\1/g,其中(l)是第一个分组,\1指向第一个分组,即\1重复了第一个分组的内容,所以该正则表达式......
  • input 输入框数字框正则
    input输入框只能输入正数,保留小数点后两位,禁止输入00之类的/***只能输入数字\保留小数点后两位*@parame*@returns{*}*/constnumUtil=(e)=>{ letvalue=e value=value.replace(/[^\d.]/g,"");//清除"数字"和"."以外的字符 value=value.replace(/......
  • Jmeter正则表达式提取器
    Jmeter正则表达式提取器在jmeter里正则表达式用的位置比较多。一、正则表达式功能是从请求的响应结果中取到需要的内容,作为下一个接口的入参从而实现关联。正则表达式提取器可配合DebugSampler来查看各变量取值。要关联这个user_id":"10145"说明:简单介绍一下Jmeter正则表......