我正在尝试创建一个正则表达式,它将从字符串中选择最长的两个选项。
最长15个字符的数值或长达11个字符的任何值。
到目前为止我有这个:
^([0-9]{1,15}|.{1,11})
但是例如字符串:'7elevenshopfood'
缩短为'7'
,因为它查看了paranthesis的第一部分。如果我将其切换到
^(.{1,11}|[0-9]{1,15})
字符串'123456789123456789'
缩短为'12345678912'
,因为它会再次查看表达式的第一部分。
知识较多regexp
的人有想法吗?
答案 0 :(得分:6)
这就是大多数正则表达式方言的工作方式,交替是按照它们编写的顺序进行测试的,第一个匹配部分将结束搜索。
在你的情况下,你可以通过以下方式解决这个问题:
^(\d{12,15}|.{1,11})