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

时间:2011-12-02 12:12:02

标签: regex

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

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

到目前为止我有这个:

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

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

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

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

知识较多regexp的人有想法吗?

1 个答案:

答案 0 :(得分:6)

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

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

^(\d{12,15}|.{1,11})