【问题标题】:Regular expression that matches a single word in any order以任意顺序匹配单个单词的正则表达式
【发布时间】:2022-01-18 23:02:46
【问题描述】:

经过漫长但不成功的搜索后,我开始怀疑我正在寻找的内容是否可能,我想要一个正则表达式,它要求选择的每个字母都是强制性的,但只能以任何顺序出现一次。

例如:^[abc]{3}$

我期望的结果是它只匹配:

abc, bac, cba, acb

当我得到:

acc, abb, cca, aab

你知道我要做什么了吗?

【问题讨论】:

  • 不正确的欺骗,因为 OP 希望在这个问题中每个字母都是强制性的。

标签: javascript php regex


【解决方案1】:

这是另一种方式。

^(?!.*([abc]).*\1)[abc]{3}$

Demo

负前瞻

(?!.*([abc]).*\1)

断言没有字符重复并且

[abc]{3}

与两个锚点一起断言字符串的长度为 3,并且由字符类中的字符组成。

【讨论】:

    【解决方案2】:

    您可以使用这样的正则表达式,并在反向引用中对匹配的字符进行负前瞻:

    ^(?:([abc])(?!.*\1)){3}$
    

    RegEx Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-06
      • 1970-01-01
      • 1970-01-01
      • 2012-12-04
      相关资源
      最近更新 更多