【问题标题】:Regular expression that checks for existence at least 3 different characters in a string检查字符串中是否存在至少 3 个不同字符的正则表达式
【发布时间】:2012-05-04 08:01:23
【问题描述】:

我需要一个正则表达式来确保一个字符串至少包含 3 个不同的字符(任何类型)。

例如,aqaqaq 无效,因为它仅由 2 个不同的字符组成。 aqwaqa 或 aq3aqa 或 aq!aqa 有效。

这可能在正则表达式中吗?

语言:Javascript / PHP

谢谢

【问题讨论】:

  • 对不起,对。 Javascript & PHP,但我相信这两个是一样的

标签: php javascript regex


【解决方案1】:

您可以使用这个包含负前瞻的正则表达式:

/(.).*(?!\1)(.).*(?!\1)(?!\2)(.)/

例子:

> regex = /(.).*(?!\1)(.).*(?!\1)(?!\2)(.)/
> regex.exec('abab!aba')
["abab!ab", "a", "!", "b"]
> regex.exec('abababa')
null

【讨论】:

  • 您能稍微解释一下吗?谢谢
  • @Spiros:\1 是引用第一个(.) 的反向引用。表达式(?!\1)(.) 表示“除第一个(.) 匹配的字符之外的任何字符。\2 也是如此。
  • 所以,我可以在末尾添加 .*(?!\1)(?!\2)(?!\3)(.) 等来添加我需要的不同字符数跨度>
  • @Spiros:是的,你可以这样做。 .*(?!\1|\2|\3)(.) 也可以工作并且稍微更简洁(如果您要进一步扩展它可能是相关的)。如果进一步扩展,您也可能会遇到性能问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-22
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多