我正在尝试创建一个正则表达式,它将从字符串中选择两个选项中最长的一个。
最多 15 个字符的数值或最多 11 个字符的任何值。
到目前为止,我有这个:
^([0-9]{1,15}|.{1,11})
但例如字符串:
'7elevenshopfood'
被缩短为 '7'
,因为它查看括号的第一部分。如果我切换到^(.{1,11}|[0-9]{1,15})
字符串
'123456789123456789'
被缩短为 '12345678912'
因为它再次查看表达式的第一部分。有更多
regexp
知识的人有想法吗?
最佳答案
这就是大多数正则表达式方言的工作方式,交替测试按顺序写入,第一个匹配部分将结束搜索。
在您的情况下,您可以使用以下方法解决此问题:
^(\d{12,15}|.{1,11})
关于regex - 选择最长选项的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8356156/