【发布时间】:2021-11-11 21:27:44
【问题描述】:
我需要匹配一个最大长度为 1 到 20 个字符的字符串,它包含字母 a-g 和数字 1-7。但是,数字不能相邻 - 只允许单个数字。
有效字符串: aabbca1a6, 4gg1g2g1, 1
无效字符串: aabbca16a - 两个数字相邻,形成一个两位数 16。
我可以很容易地用[a-g1-7]{1,20} 匹配大多数字符串,但是我不知道如何有效地检测两个数字何时彼此相邻。
目前在我的程序中,通过正则表达式解析后,我只是在循环中再次遍历整个字符串,确保没有 2 个数字彼此相邻,但是我希望这一切都可以完成只有一个(简单的)正则表达式。
【问题讨论】:
-
语言是什么?如果支持负前瞻,那么可以使用这个
^(?!.*\d{2}).*$ -
我在 c++ 程序中使用它 -
std::regex. -
好的,对于 std:regex 它应该可以工作
^(?!.*\d{2})[a-g1-7]{1,20}$
标签: regex