java - 验证单词中给定字母的数量(重复和顺序并不重要)

标签 java regex validation match

我需要验证一个单词是否满足最低字母要求,但我陷入了重复的困境。

例如:我需要我的单词包含以下字母 AAAABBC(至少 4 次 A、至少 2 次 B 和至少 1 次 D)。

这应该匹配:

  • ABRACADABRA;
  • BRACADABRAA;
  • BRAACADABRAA;
  • DBRAACADABRAA;

等等。

我设法构建了这个正则表达式:A.*(?=(A.*){4}),但我不知道如何强制执行其余字母和最小出现次数。我想到了这样的事情: (A.*(?=(A.*){4,})|B.*(?=(B.*){2,})) 但这只能保证该单词至少有 4 个 A 或至少 2 个 B。再说一遍,不能保证单词中的字母,我只需要确保我要求的字母存在,并且它们至少出现我要求的次数。

那么,有什么提示吗?

最佳答案

您可以使用正则表达式:

^(?=(?:[^A]*A){4})(?=(?:[^B]*B){2})(?=[^D]*D).+$

RegEx Demo

关于java - 验证单词中给定字母的数量(重复和顺序并不重要),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28459280/

相关文章:

r - 我想计算 R 中数据框每一行中值/字符的每次出现次数,包括它被其他值/字符包围时

C# 正则表达式,无法识别的转义序列

javascript - 不使用 Bootstrap 验证上传带有 .jpg 扩展名的照片

asp.net-mvc - 限制一段时间内用户帐户注册的数量?

java - C++ 迭代器模型与 Java 迭代器模型

java - 递归和递归方法

java - 为什么我会收到此 NoClassDefFoundError?

java - 使用 ResultSet.Previous 方法在使用 .mdb 文件 OBDC 的 Java 中不起作用

php - 正则表达式表示一个单词,但如果他们正在创建另一个单词,则避免使用它

ruby-on-rails - 在 Rails 3.2 + SimpleForm 中显示带有嵌套表单错误的字段