正则排坑日记-IOS、MAC系统不支持正则中的零宽断言匹配

1,问题描述:

某次项目中使用了如下正则语句:

val = val.replace(new RegExp(`(?<=.{${ellipsisStart}}).+`), '…')

在window系统下以及安卓系统下能正常运行、但是去到ipad设备下safari浏览器时,运行报错。

2,问题导致原因:

原因是,ios、mac系统不支持正则中的零宽断言。

正则零宽断言,一共4种  如:
1、(?=xxx) 例:\b\w+(?=ing\b),匹配以ing结尾的单词的前面部分
2、(?<=xxx) 例:(?<=\bre)\w+\b会匹配以re开头的单词的后半部分
3、(?!xxx) 例:\d{3}(?!\d)匹配三位数字,而且这三位数字的后面不能是数字
4、(?<!xxx) 例:(?<![a-z])\d{7}匹配前面不是小写字母的七位数字

上面的问题中就用到了零宽断言:?<=

3,解决方案:

根据业务重新调整正则,只需要避免使用零宽断言即可
 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值