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

 更新时间:2021年10月14日 14:47:19   作者:皮蛋很白  
对于正则表达式的中\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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • ORACLE数据库中怎么求除数字、字母之外的非中文字符的正则表达式

    ORACLE数据库中怎么求除数字、字母之外的非中文字符的正则表达式

    最近使用oracle数据库做一个进销存项目,其中有一需求是:ORACLE数据库中求除数字、字母之外的非中文字符的正则表达式,当时还真是难住了,正则表达式好久没用了,后来通过上网搜了下相关资料,下面把具体具体解决方案分享给大家,以供那些需要的朋友参考
    2015-10-10
  • VS里的正则表达式的替换技巧

    VS里的正则表达式的替换技巧

    这篇文章主要介绍了VS里的正则表达式的替换技巧,需要的朋友可以参考下
    2016-05-05
  • 正则应用之 日期正则表达式

    正则应用之 日期正则表达式

    首先需要说明的一点,无论是Winform,还是Webform,都有很成熟的日历控件,无论从易用性还是可扩展性上看,日期的选择和校验还是用日历控件来实现比较好。</P><P>
    2009-07-07
  • IOS正则表达式判断输入类型(整理)

    IOS正则表达式判断输入类型(整理)

    在开发过程中,有时需要对用户输入的类型做判断,最常见是在注册页面即用户名和密码。接下来通过本文给大家分享IOS正则表达式判断输入类型,一起学习吧
    2017-01-01
  • 揭开正则表达式的神秘面纱(regexlab出品)

    揭开正则表达式的神秘面纱(regexlab出品)

    正则表达式学习起来其实是很简单的,不多的几个较为抽象的概念也很容易理解,之所以很多人感觉正则表达式比较复杂,一方面是因为大多数的文档没有做到由浅入深地讲解,概念上没有注意先后顺序,给读者的理解带来困难
    2020-02-02
  • IP 正则表达式验证

    IP 正则表达式验证

    今天学习了正则表达式,觉得非常实用,而且现在各种编程语言和应用软件如Word、MySQL等等也都内置了正则引擎。
    2008-12-12
  • PHP匹配多行的正则表达式分析

    PHP匹配多行的正则表达式分析

    PHP匹配多行的正则表达式分析,需要的朋友可以参考下,多用于采集替换等。
    2011-07-07
  • 正则表达式之文本模式的匹配和查找

    正则表达式之文本模式的匹配和查找

    这篇文章主要介绍了正则表达式之文本模式的匹配和查找操作方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • VSCode正则表达式匹配多行实战案例

    VSCode正则表达式匹配多行实战案例

    正则表达式是一种强大的文本模式匹配工具,可以用来搜索和修改文本,下面这篇文章主要给大家介绍了关于VSCode正则表达式匹配多行实战案例的相关资料,需要的朋友可以参考下
    2024-03-03
  • 如何使用正则表达式对输入数字进行匹配详解

    如何使用正则表达式对输入数字进行匹配详解

    正则表达式用于字符串处理、表单验证等场合,实用高效,下面这篇文章主要给大家介绍了关于如何使用正则表达式对输入数字进行匹配的相关资料,文中介绍的非常详细,需要的朋友可以参考下
    2022-10-10

最新评论