【问题标题】:Check for X instances in a regex检查正则表达式中的 X 个实例
【发布时间】:2016-10-26 15:31:26
【问题描述】:

如何检查给定字符串是否包含 X 个大写字母、Y 个数字和 Z 个非单词字符?这些数字必须在正则表达式中定义。

例如

hereisMy1String

它是否包含:2 个数字(或任何给定数字)、2 个大写字母(或任何给定数字)和一个非单词字符(或多个)?

数字/字母/字符可以在字符串中的任何位置。

【问题讨论】:

  • 你需要像^(?=(?:\D*\d){2})(?=(?:[^A-Z]*[A-Z]){2})(?=(?:\w*\W){1})这样的东西
  • 这取决于您所说的“不工作” - ideone.com/91izLw。您提供的字符串没有非单词字符。
  • 这是一个经典案例,不要在一个表达式中执行。如果您不尝试强制执行,代码将变得容易阅读一百万倍。

标签: regex


【解决方案1】:

最后得到的答案是:

#(?=(\D*\d){2})(?=([^A-Z]*[A-Z]){2})(?=([^\W_]*[\W_]){1})#

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-23
    • 2011-07-31
    • 2014-05-23
    • 2015-03-12
    • 2011-12-19
    • 1970-01-01
    • 2022-06-16
    • 1970-01-01
    相关资源
    最近更新 更多