Word有精确的X字母和Y数字

时间:2017-11-19 09:25:19

标签: regex

我需要检查一个单词是否正好有6个字母和1个数字。 我已尝试this answer并将我的正则表达式修改为如下所示:

^[a-zA-Z]{6}\d{1}$(意思是a-z或A-Z之间的任何字母6次和1位数字)

但我找不到任何我能想象的字符串匹配(例如:sixsix1,1sixixix,six1six) 我正在使用regex101来编译正则表达式

我做错了什么?

2 个答案:

答案 0 :(得分:2)

你可以试试这个:

^(?=^[^\d]*\d{1}[^\d]*$)[a-zA-Z0-9]{7}$

demo

说明:

  1. (?=^[^\d]*\d{1}[^\d]*$)确保只查找一个数字 在整个字符串中。
  2. [a-zA-Z0-9]{7}确保a-zA-Z0-9中有7个字符。如 以前确认不会超过1个数字 只有当它有6个字符和一个数字时才会匹配。

答案 1 :(得分:0)

this回答借用,因为我从来没有写过Java:

String s = "six1six";
if (s.length() != 7) return false;
int digits = 0;
int letters = 0;
for (int i = 0; i < 7; i++) {
    if (Character.isDigit(s.charAt(i))) {
        digits++;
    }
    else if (Character.isLetter(s.charAt(i))) {
        letters++;
    }
}
return digits == 1 && letters == 6;

Java中是否真的没有LINQ等价物?这很可怕。