JavaScript--环视
前言:
环视就是断言
正则匹配是从前往后的,断言匹配的是位置,是"零宽"的
分类:
让我们看一个正则匹配,匹配带字符'o'的单词,在此基础上说明断言
let str = `hello world, I'm your brother`// 匹配带有字符o的单词console.log( str.match(/[a-z]{0,}o[a-z]{0,}/g) )
//=> ['hello', 'world', 'your', 'brother']
1、先行断言 (?=p)
匹配某个位置,其右边一定是p表达式
// 匹配字符o,右边一定是r或u
console.log( str.match(/[a-z]{0,}o(?=[ru])[a-z]{0,}/g) )
//=> ['world', 'your']// 匹配字符o,右边第二个字符一定是l
console.log( str.match(/[a-z]{0,}o(?=.l)[a-z]{0,}/g) )
//=> ['world']
2、先行反向断言(?!=p)
匹配某个位置,其右边一定不是p表达式
// 匹配字符o,右边一定不是r
console.log( str.match(/[a-z]{0,}o(?!r)[a-z]{0,}/g) )
//=> ['hello', 'your', 'brother']
3、后行断言(?<=p)
匹配某个位置,其左边一定是p表达式
// 匹配字符o,左边一定是y
console.log( str.match(/[a-z]{0,}(?<=y)o[a-z]{0,}/g) )
//=> ['your']
4、后行反向断言(?<!p)
匹配某个位置,其左边一定不是p表达式
注意:是?<!,不要写错了
// 匹配字符o,左边一定不是br
console.log( str.match(/[a-z]{0,}(?<!br)o[a-z]{0,}/g) )
//=> ['hello', 'world', 'your']
注意:
零宽,不占位
'your'.match(/yo(?=[abu])/)
//=> ['yo', index: 0, input: 'your', groups: undefined]'your'.match(/yo[abu]/)
//=> ['you', index: 0, input: 'your', groups: undefined]
拓展:
分隔符_牛客题霸_牛客网
// 实现参数数字的千分位分隔符字符串
// 输入数字1234567,输出字符串'1,234,567'
// 输入数字-12345, 输出字符串'-12,345'
function comma(num){let str = num.toString()return str.replace(/(\d)(?=(\d{3})+$)/g, '$1,')// $1匹配的是第一个分组(\d)// (?=(\d{3})+$) 是先行断言,表示可以匹配到至少一个 \d{3} ,最后的位置一定是$
}
console.log( comma(1234567) ) //=> '1,234,567'
console.log( comma(-12345) ) //=> '-12,345'
参考链接:
3.断言(环视)、模式修饰符和使用字符串对象方法执行正则表达式_哔哩哔哩_bilibili
JS正则表达式完整版_Chafferer,迷心的博客-CSDN博客_js正则?=
JavaScript--环视相关推荐
- 深入理解正则表达式环视的概念与用法
在<深入理解正则表达式高级教程-环视>中已经对环视做了简单的介绍,但是,可能还有一些读者比较迷惑,今天特意以专题的形式,深入探讨一下正则表达式的环视的概念与用法. 深入理解正则表达式环视的 ...
- javascript权威指南学习笔记
一.数据类型: js中,所有的数字都是浮点型的. isNaN()/isFinite() //检测数据类型 Infinity //无穷大 Number.MAX_VAL ...
- php正则表达式正向预查,javascript正则表达式-----正向预查
前几篇有用到过, 但是未做深入学习,发现一篇很好的博文 转载自 javascript--正向预查 什么是正向预查?这里有腾讯招聘的一个例子: 如何给一串数字用千分制表示?比如9999999999变成9 ...
- 玩转JavaScript正则表达式
Why Regular Expression 我们先来看看,我们干哈要学正则表达式这玩意儿: 复杂的字符串搜寻.替换工作,无法用简单的方式(类似借助标准库函数)达成. 能够帮助你进行各种字符串验证. ...
- 正则表达式的环视深度剖析
文章目录 一.环视基础 二.顺序环视匹配过程 (一)顺序肯定环视匹配过程 (二)顺序否定环视匹配过程 三.逆序环视匹配过程 (一)逆序环视基础 (二)逆序肯定环视匹配过程 1. 逆序表达式的长度固定, ...
- JavaScript(JS)常用正则表达式汇总
文章目录 自定义字符串校验函数 常用正则表达式 自定义字符串校验函数 校验字符串是否全由数字组成,是则返回true,否则返回false: function isDigit(str) {var regE ...
- php查找以xx结尾的的字符串单词,Javascript中查找不以XX字符结尾的单词示例代码_javascript技巧...
首先,让我声明一下,我在写这篇文章之前花了2个多小时在弄正则表达式.悲~悲~悲~ 按照一般的思路,先来看看其他几个插找方式: 我以字符串 var str = "eattd gebcat ge ...
- [译]JavaScript的新功能将改变正则表达式的编写方式
翻译:第一秩序 原文:www.smashingmagazine.com/2019/02/reg- 摘要:如果你曾用 JavaScript 做过复杂的文本处理和操作,那么你将会对 ES2018 中引入的 ...
- JavaScript正则式练习
使用正则式匹配第一个数字和最后一个数字,使用环视 str2 = 09051 : Fast Food Restaurants - Concession Stands/Snack Bars Delicat ...
- 正则环视(零宽度断言)
文章目录 前瞻(Lookahead ) 肯定式前瞻(positive lookahead ) 否定式前瞻(negative lookahead ) 后顾(Lookbehind ) 肯定式后顾(posi ...
最新文章
- JavaScript String 对象扩展方法
- goldengate源端意外宕机,传输进程终止,导致OGG-01031报错
- 快捷登录PHP,phpcms 微信快捷登陆
- 网络编程基础知识(待更新补充)
- file_put_contents记录的日志内容丢失
- 支持Delphi2009/2010的DES加密单元
- matlab机器人工具箱puma560模型学习
- 简述SSM框架与SSH框架
- 空间域和频域结合的图像增强技术及实现
- mysql in 子查询多个字段_SQL IN 子查询返回多对值
- 如何 接收消息服务器url,(读书笔记)网络是怎样连接的——浏览器生成消息...
- 计算机中丢失storm.d,win10 64位电脑缺少storm.dll怎么办_win10玩暗黑破坏神2缺少storm.dll文件修复方法...
- 马云对话马斯克:福报变成了一周工作12小时?
- PXE系列之一:PXE环境搭建
- 八、量子纠缠状态的纯化协议及其应用
- android手电筒功能吗,android通过led实现手电筒功能
- 阿里云【名师课堂】Java零基础入门24 ~ 26:方法的定义与使用
- 郴州市少儿机器人编_郴州市举办中小学机器人竞赛
- Ray:一个分布式应用框架
- C语言课设——学生体测系统