当前位置: 代码网 > it编程>编程语言>正则表达式 > 深入浅出正则表达式中的边界和B

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

2024年05月18日 正则表达式 我要评论
正则表达式中:  表示单词边界  表示非单词边界,应理解为(非单词)边界,而不是非(单词边界),它仍然匹配的是边界 边界我将正则中的位置分为 字符的占位 和 字符的间隙。字符

正则表达式中:

  • \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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com