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

标签 regex

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

最多 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/

相关文章:

java - 按excel条件分割

java - GLOB 在 Unix/Linux/Java 世界中的缩写是什么?

regex - 一行正好两个大写单词

php - 匹配必须为 12 个字符长且大写的字符串的前三个字母的正则表达式

regex - R 正则表达式 : grep excluding hyphen/dash as boundary

javascript - 正则表达式屏蔽输入

php - 无法用 preg_replace() 中的其他内容替换 `$_`

javascript - 正则表达式:替换模式内的字符串作为函数的返回值

javascript - 使用\b 元字符与不使用它的结果相同

javascript - 使用 JavaScript 的正则表达式从 SQL 查询字符串中删除注释