正则表达式选择最长的选项

问题描述 投票:5回答:1

我正在尝试创建一个正则表达式,从字符串中选择最长的两个选项。

数字值最多15个字符长或任何值最多11个字符长。

到目前为止我有这个:

^([0-9]{1,15}|.{1,11})

但是例如字符串:'7elevenshopfood'缩短为'7',因为它查看了paranthesis的第一部分。如果我切换到

^(.{1,11}|[0-9]{1,15})

字符串'123456789123456789'缩短为'12345678912',因为它再次查看表达式的第一部分。

任何有更大regexp知识的人都有自己的想法?

regex
1个回答
6
投票

这就是大多数正则表达式方言的工作方式,交替按照它们的编写顺序进行测试,第一个匹配部分将结束搜索。

在你的情况下,你可以通过以下方式解决这个问题:

^(\d{12,15}|.{1,11})
© www.soinside.com 2019 - 2024. All rights reserved.