iOS JS 零宽断言的正则问题

2021-11-20 12:43:26 +08:00
 ljsh093

互联网搜索了一波,发现这东西就是会触发异常,那么像前置零宽断言这种语句可以有什么办法改写吗?本人实在是正则苦手,或者求一波正则学习的方法。

异常的是

/(?<=[0-9])x\b/

需要匹配 25x 50x 中的 x

目前想到的办法是用

.replace /()()/, '$1 x'

这种办法

2121 次点击
所在节点    JavaScript
7 条回复
eason1874
2021-11-20 13:01:28 +08:00
例子少,不知道你想要的是什么

[0-9] 只匹配一个数字,这样才是匹配两个数字 [0-9]{2}
ljsh093
2021-11-20 13:52:58 +08:00
@eason1874 需要匹配前面是数字并且后面没有东西的中间的 x
eason1874
2021-11-20 14:15:21 +08:00
搜了下,貌似是 iOS 不支持断言,别用断言换其他的试试

比如匹配不捕获 /(?:[0-9])x\b/

或者都捕获,通过变量获取匹配内容再处理
eason1874
2021-11-20 14:17:07 +08:00
如果 \b 也不支持,就给 x 也写个匹配规则
lin98
2021-11-20 14:44:41 +08:00
@eason1874 看了下文档,iOS 应该是支持 (?<=subexpression )(正回顾后发断言)的
lin98
2021-11-20 15:13:34 +08:00
像一楼说的一样,你这个只能匹配一位数字,如果确定是两位数字 /(?<=[0-9]{2})x\b/. 否则可以 /(?<=[0-9]+)x\b/
ljsh093
2021-11-20 15:20:27 +08:00
@lin98
@eason1874
感谢各位,我这个情景是前面必定是数字,所以匹配一位就够了,主要还是断言的问题,我再学习下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/816742

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX