匹配所有无序数字序列的正则表达式

标签 regex regex-negation

我正在尝试构建一个仅匹配无序数字序列的正则表达式。我只能创建一个与有序数字序列匹配的相反正则表达式,但我不知道如何反转它。这是 demo

^((?:0(?=1|$))?(?:1(?=2|$))?(?:2(?=3|$))?(?:3(?=4|$))?(?:4(?=5|$))?(?:5(?=6|$))?(?:6(?=7|$))?(?:7(?=8|$))?(?:8(?=9|$))?9?|(?:9(?=8|$))?(?:8(?=7|$))?(?:7(?=6|$))?(?:6(?=5|$))?(?:5(?=4|$))?(?:4(?=3|$))?(?:3(?=2|$))?(?:2(?=1|$))?(?:1(?=0|$))?0?)$

输入:

123
234567
0123456789
87654
321
985
346
320

预期比赛:

985
346
320

最佳答案

尝试这个正则表达式:

^(?=.*(?:1(?![02])|2(?![13])|3(?![24])|4(?![35])|5(?![46])|6(?![57])|7(?![68])|8(?![79])|9(?!8)|0(?!1))(?!$))\d+$

Click for Demo

说明:

  • ^ - 断言字符串的开头
  • (?=.*(?:1(?![02])|2(?![13])|3(?![24])|4(?![35])| 5(?![46])|6(?![57])|7(?![68])|8(?![79])|9(?!8)|0(?!1)) (?!$)) - 前瞻以确保匹配不包含任何连续数字(例如,如果有 2,则后面不应跟有 31。此检查适用于所有数字)
  • \d+ - 匹配出现 1 次以上的数字
  • $ - 断言字符串结尾

关于匹配所有无序数字序列的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47964332/

相关文章:

regex - 从多个文本文件名中提取行,然后从文本文件中提取这些行 - Linux

regex - IIS URL 重写,URL 中的条件更改

regex - GWT - 2.1 RegEx 类来解析自由文本

c# - 正则表达式:匹配任何文本后跟特定封闭格式的模式

Java 正则表达式 : How to ignore a set of words

匹配 url 的正则表达式模式

javascript - 反正则表达式 javascript

regex - 我如何在 Django 中编写此 URL?

regex - 无论如何,我是否可以避免将以下规则中的 9 位数字与我拥有的正则表达式相匹配?

c++ - 使用 SLRE 正则表达式查找两个标签之间的数据