我需要检查一个单词是否正好有6个字母和1个数字。 我已尝试this answer并将我的正则表达式修改为如下所示:
^[a-zA-Z]{6}\d{1}$
(意思是a-z或A-Z之间的任何字母6次和1位数字)
但我找不到任何我能想象的字符串匹配(例如:sixsix1,1sixixix,six1six) 我正在使用regex101来编译正则表达式
我做错了什么?
答案 0 :(得分:2)
你可以试试这个:
^(?=^[^\d]*\d{1}[^\d]*$)[a-zA-Z0-9]{7}$
说明:
(?=^[^\d]*\d{1}[^\d]*$)
确保只查找一个数字
在整个字符串中。[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等价物?这很可怕。