求个正则,如何匹配不在首尾的指定字符?

2018-06-07 08:22:17 +08:00
 lihongming

比如我要匹配[0-9]+,但首尾的不匹配(首尾的连续数字都忽略),应该如何写呢?

例:123abc45d678efg90,应该匹配到 45 和 678

2561 次点击
所在节点    程序员
11 条回复
ryd994
2018-06-07 08:26:12 +08:00
头尾用^[0-9]*先过滤掉
ryd994
2018-06-07 08:27:23 +08:00
呃,^[0-9]+ 和 [0-9]+$
ryd994
2018-06-07 08:32:03 +08:00
如果你是要 group capture 的话
^[0-9]*[^0-9]+([0-9]+)[^0-9]+[0-9]*$
这样大概能行
eggshell
2018-06-07 08:39:15 +08:00
零宽断言可以做到 (?<!^)(?<!\d+)\d+(?!\d+)(?!$)
不过 应该有更好的写法吧。。
zynlp
2018-06-07 08:39:32 +08:00
用断言吧
Removable
2018-06-07 08:43:29 +08:00
零宽断言应该可以的,不过如果你是用在 js 里的话,那除了 Chrome 外的浏览器都不支持后发断言
eggshell
2018-06-07 08:43:52 +08:00
(?<!^\d*)\d+(?!\d+)(?!\d*$)
liberize
2018-06-07 14:32:39 +08:00
lihongming
2018-06-07 15:36:01 +08:00
@liberize 多谢,我对正则没学那么深入,这我都看不懂😂
flowfire
2018-06-08 10:28:49 +08:00
@Removable Chrome 支持后发断言了?什么时候的事
Removable
2018-06-08 10:41:06 +08:00
@flowfire #10 不知道,我大概一个多月前用 js 写零宽断言的时候,在 Chrome 上一直没问题,当时我还很好奇资料上为什么说 js 不支持后发断言。
后来测试人员说 ie 上有 bug,我才发现 ie 和火狐都不能正常使用后发断言,只有 chrome 可以

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

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

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

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

© 2021 V2EX