javascript正则表达式学习之位置匹配
一、前言
正则表达式是匹配模式,要么是匹配字符,要么匹配位置。
其实在开发中很少用到匹配位置,本篇文章主要包含:
二、什么是位置
位置:相邻字符之间的位置。
三、如何匹配位置
在ES5中,共有6个锚:^, $, \b, \B, (?=p), (?!p)
可视化形式:
RegExp:/^$\b\B(?=a)(?!b)/g
3.1 ^和$
^(脱字符)匹配开头,在多行匹配中匹配行开头。
$(美元符)匹配结尾,在多行匹配中匹配行结尾。
比如:我们把字符串的开头和结尾用#替换(位置可以替换成字符的):
var result = "hello".replace(/^|$/g, '#'); console.log(result); // "#hello#"
多行匹配模式(有修饰符m)时,二者是行的概念,我们需要注意:
var result = "I\nlove\njavascript".replace(/^|$/gm, '#'); console.log(result); // #I#// #love#// #javascript#
3.2 \b和\B
\b是单词边界,具体就是\w和\W之间的位置,也包括\w与^之间的位置,和\w和$之间的位置。
比如考察文件名"[JS] Lesson_01.mp4"中的\b,如下:
var result = "[JS] Lesson_01.mp4".replace(/\b/g, '#'); console.log(result); // "[#JS#] #Lesson_01#.#mp4#"
首先,我们知道\w是字符组[0-9a-zA-Z]的简写,即使字母数字或者下划线中任何一个字符。而\W是字符组[^0-9a-zA-Z]的简写,即\W是\w以外的任何一个字符。
我们再来看#是怎么来的:
第 1 个,两边字符是 "[" 与 "J",是 \W 与 \w 之间的位置。
第 2 个,两边字符是 "S" 与 "]",也就是 \w 与 \W 之间的位置。
第 3 个,两边字符是空格与 "L",也就是 \W 与 \w 之间的位置。
第 4 个,两边字符是 "1" 与 ".",也就是 \w 与 \W 之间的位置。
第 5 个,两边字符是 "." 与 "m",也就是 \W 与 \w之间的位置。
第 6 个,位于结尾,前面的字符 "4" 是 \w,即 \w 与 $ 之间的位置。
知道了\b概念后,那\B就好理解了,\b是单词边界,\B是非单词边界
var result = "[JS] Lesson_01.mp4".replace(/\B/g, '#'); console.log(result); // "#[J#S]# L#e#s#s#o#n#_#0#1.m
栏 目:正则表达式
下一篇:Python中正则表达式的巧妙使用一文包你必掌握正则
本文地址:https://www.xiuzhanwang.com/a1/zhengzebiaodashi/11171.html
您可能感兴趣的文章
- 01-11正则表达式实现添加、删除、替换三种功能
- 01-11python 用正则表达式筛选文本信息的实例
- 01-11正则表达式之匹配数字范围
- 01-11python爬虫正则表达式之处理换行符
- 01-11正则表达式匹配路由的实现代码
- 01-11正则表达式截取身份证号码加密的方法
- 01-11js正则表达式 匹配两个特定字符间的内容示例
- 01-11MySQL使用正则表达式进行查询操作经典实例总结
- 01-11python正则表达式之对号入座篇
- 01-11详解正则表达式实现二代身份证号码验证
阅读排行
本栏相关
- 01-11正则表达式实现添加、删除、替换三
- 01-11正则表达式之匹配数字范围
- 01-11python 用正则表达式筛选文本信息的实
- 01-11正则表达式匹配路由的实现代码
- 01-11python爬虫正则表达式之处理换行符
- 01-11js正则表达式 匹配两个特定字符间的
- 01-11正则表达式截取身份证号码加密的方
- 01-11python正则表达式之对号入座篇
- 01-11MySQL使用正则表达式进行查询操作经典
- 01-11详解正则表达式实现二代身份证号码
随机阅读
- 04-02jquery与jsp,用jquery
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 01-11ajax实现页面的局部加载
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 08-05DEDE织梦data目录下的sessions文件夹有什
- 01-10delphi制作wav文件的方法
- 01-10SublimeText编译C开发环境设置
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 01-10C#中split用法实例总结
- 08-05织梦dedecms什么时候用栏目交叉功能?