深入浅出正则表达式中的边界\b和\B

 更新时间:2021-12-17 12:00:35   作者:佚名   我要评论(0)

目录边界单词\b 单词边界
\B 非单词边界
举列总结正则表达式中:

\b 表示单词边界
\B 表示非单词边界,应理解为(非单词)边界,

正则表达式中:

  • \b 表示单词边界
  • \B 表示非单词边界,应理解为(非单词)边界,而不是非(单词边界),它仍然匹配的是边界

边界

我将正则中的位置分为 字符的占位 和 字符的间隙。

字符的占位是显式的位置。

以 I'm iron man 为例。

肉眼可见的字母 符号 空格都是可以占位的字符,也就是可以用下标获取到字符的位置。

字符的间隙是隐式的位置。

即显示位置之间的位置,比如I和'之间的位置,字符串开头和I之间的位置等。

边界 指的是占位的字符左右的间隙位置。

单词

正则中所说的单词指的是 \w 可以匹配的字符,即数字、大小写字母以及下划线 [0-9a-zA-Z_]

\b 单词边界

单词边界匹配的就是这样的间隙位置:

左边占位的字符或右边占位的字符,至少有一个不是 \w

// 只有首尾位置匹配
console.log('0aZ_'.replace(/\b/g, '.')) // .0aZ_.

// +不是\w,所以它的左右间隙都可以被匹配
console.log('a+a'.replace(/\b/g, '.')) // .a.+.a.

// 空格也不是\w,所以它的左右间隙都可以被匹配
console.log('a a'.replace(/\b/g, '.')) // .a. .a.

\B 非单词边界

理解了 \b,\B就好理解了。

它匹配的也是 边界 ,针对的是 与 \b 相反 的 非单词(\W)。

也就是,左右占位的字符,都必须是 \w。

或者说 所有不能被\b匹配的 边界。

console.log('0aZ_'.replace(/\B/g, '.')) // 0.a.Z._

console.log('a+a'.replace(/\B/g, '.')) // a+a.

console.log('a a'.replace(/\B/g, '.')) // a a

举列

1.单词边界

var str = ' 2 ';//其中空格与2之间的位置叫做单词边界,匹配\b

2.非单词边界

var str = ",,,,,和呵呵,,,,,";
var reg = '\B呵\B';//reg匹配中间的呵,其两侧都是字符,中间的位置为非单词边界。

3.统计以“,”分割的元素中“3”的个数

var test = "137,1,33,4,3,6,21,3,35,93,2,98"; 
var count = test.match(test, "\b3\b").length; //结果:2

4.千分位分割数字,将输出成7,654,321这样的格式

'7654321'.replace(/\B(?=(\d{3})+(?!\d))/g,',')
//7,654,321(匹配末尾是非数字,中间是连续3位数字整倍数的非单词边界)

'99893'.replace(/\B(?=(\d{3})+$)/g, ',')
// '99,893'

5.手机号344分割

'12345678901'.replace(/\B(?=(?:\d{4})+$)/g, '-')
// '123-4567-8901'

总结

到此这篇关于正则表达式中边界\b和\B的文章就介绍到这了,更多相关正则表达式边界\b和\B内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
  • 十分钟上手正则表达式 下篇
  • 十分钟上手正则表达式 上篇
  • Python正则表达式保姆式教学详细教程
  • 正则表达式常见的4种匹配模式小结
  • 轻松掌握正则表达式findall()函数详解

相关文章

  • 深入浅出正则表达式中的边界\b和\B

    深入浅出正则表达式中的边界\b和\B

    目录边界单词\b 单词边界 \B 非单词边界 举列总结正则表达式中: \b 表示单词边界 \B 表示非单词边界,应理解为(非单词)边界,
    2021-12-17
  • ????????????????????????????????????

    ????????????????????????????????????

    ?????????? (.*?) import re a = '456qwe789rty123abc' re=re.findall('456(.*?)789',a) print(re) ????????????????????????4
    2021-12-17
  • 36个正则表达式(开发效率提高80%)

    36个正则表达式(开发效率提高80%)

    目录写在前面1、整数2、正整数3、负整数4、数字5、正数(正整数 + 0)6、负数(负整数 + 0)7、浮点数8、正浮点数9、负浮点数10、浮点数11、
    2021-12-17
  • SSM框架整合JSP中集成easyui前端ui项目开发示例详解

    SSM框架整合JSP中集成easyui前端ui项目开发示例详解

    目录前言EasyUI下载与配置页面美化运行结果总结与问题前言 前端的UI框架很多,如bootsrap、layui、easyui等,这些框架提供了大量控件供开发人
    2021-12-17
  • 家里电费太高 特惠93折电费接口正式上线

    家里电费太高 特惠93折电费接口正式上线

    说到这大家可能不是很相信,这都很正常,因为这块的市场还很大,需要深耕,用的人少,一般用的人都是对这块熟悉的人,他们都在把这块市场当作副业自己创业赚钱,现在已经有
    2021-12-09
  • 如何正确选择对接电商类会员权益?

    如何正确选择对接电商类会员权益?

    当今社会,消费者需求趋向多样化,进一步推动各行各业高速发展,每家企业所拥有的资源与权益也各不相同。今天,我们先来简单分析电商类产品会员权益现状。随着互联网的飞速
    2021-11-30
  • vue实现单点登录的方式汇总

    vue实现单点登录的方式汇总

    最近项目停工了,RageFrame的学习暂时告一段落,这一篇给大家分享下有关单点登录的相关知识,并提供一些demo给大家参考,希望对想了解的朋友
    2021-11-22
  • Go 语言中 20 个占位符的整理

    Go 语言中 20 个占位符的整理

    目录一、概念二、哪些函数支持三、占位符使用四、普通占位符1. %v、%+v、%#v2. %T3. %%五、布尔占位符六、整数占位符1. %b2. %c3. %d、%5d、
    2021-11-15
  • Go 基于令牌桶的限流器实现

    Go 基于令牌桶的限流器实现

    目录简介原理概述具体实现原理限流器如何限流简介 如果一般流量过大,下游系统反应不过来,这个时候就需要限流了,其实和上地铁是一样的,
    2021-11-15
  • 超详细OpenMV与STM32单片机通信 附完整源码

    超详细OpenMV与STM32单片机通信 附完整源码

    目录1.前言(闲话)2.硬件连接3.软件代码———OpenMV端4.软件代码———STM32端5.利用PC端测试数据数据是否发送接收正常6.学习补充 (代码看不
    2021-11-15

最新评论