js正则排除运算

工作中经常用到正则运算,而特殊场景下需要匹配排除某个特点字段进行匹配,下面是目前遇到的几种排除运算

首先要确认两个概念:前瞻、前瞻

表达式名称描述
(?=exp)正向前瞻匹配后面满足表达式exp的位置
(?!exp)负向前瞻匹配后面不满足表达式exp的位置
(?<=exp)正向后瞻匹配前面满足表达式exp的位置
(?<!exp)负向后瞻匹配前面不满足表达式exp的位置

看起来挺抽象的,其实可以简单理解为以某个字段往前(往后)看一下是否包含(不包含)某个字段

// 以H为基准往后看,是否紧跟着i字段
/H(?=i)/g.test('Hi')
// 以H为基准往后看,是否不紧跟着i字段
/H(?!i)/g.test('Hi')
// 以H为基准往前看,是否紧跟着i字段
/(?<=i)H/g.test('iH')
// 以H为基准往前看,是否不紧跟着i字段
/(?<!i)H/g.test('Hi')

1、查找不以某个字符(比如helloword)开头的字符串

正则:/^(?!helloword).*$/

这种比较简单,就是查找开头不是helloword的字段,这种就是负向前瞻,开头往后看不包含helloword

2.查找不以某个字符(比如helloword)结尾的字符串

正则:/^.*(?<!helloword)$/

这种不是很常见,因为用到了负向后瞻,以结尾往后看不包含helloword

3.查找不包含某个字符(比如helloword)的字符串

正则:/^(?!.*helloworld).*$/

这种就比较麻烦了,可以看出1和3比较相像,只是比1的hellowold之前加了.*字段

我们可以理解为不以XXXXXhelloword为开头的字段,这种就排除了helloword存在中间或结尾的情况

4.查找指定字符之间不包含某个字符(比如helloword)的字符串

正则:/A((?!helloword).)+B/

拆解来看,先把负向前瞻拿掉

/A(.)+B/,A和B之间可以加任何数据,加上前瞻就是A和B之间可以加除了helloword的任意数据

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值