java验证字符串输入的部分,以确保为某些索引输入字母或数字
撇开愚蠢的标题不谈,我很难验证输入值“MBA222”时是不允许的,而像“MB2222”这样的值是允许的。也就是说,我不确定如何确保字符串的前两个字符是字母,后四个是数字。我是不是用错了方法
public static String getValidMembership(String aMember){
while(isValidMembership(aMember) == false){
aMember = JOptionPane.showInputDialog("Please enter Membership Number");
}
return aMember;
}
private static boolean isValidMembership(String aMember){
boolean result = false;
//TODO add your code here
try{
if(!aMember.substring(0,1).contains("[a-zA-Z]+") &&
!aMember.substring(2,5).contains("[0-9]+")&&
aMember.length() != 6){
result = false;
}
else{
result = true;
}
}catch(Exception e){
result = false;
}
return result;
}
# 1 楼答案
下面是
isValidMembership()
方法的一个优雅而精巧的实现:我删除了你的
try-catch
块,因为它似乎没有必要此解决方案使用以下正则表达式,您也可以通过以下链接进行测试:
Regex101
请注意,这个正则表达式将匹配两个字母和四个数字,但Java代码施加了额外的约束,即字符串的长度必须为6
# 2 楼答案
你只需要一个正则表达式:
我建议阅读Javadoc for the Pattern class,它提供了很多关于如何使用正则表达式的细节