我有一个文本,我需要根据以下规则对其进行验证:
一个很好的例子是: L123456X 或 l123456x
我是通过以下方式做到的:
public boolean isValidated(String str) {
boolean validated = false;
char a = str.charAt(0);
char z = str.charAt(str.length() - 1);
int i;
if (str.length() == 8 && Character.isLetter(a) && Character.isLetter(z)) {
validated = true;
for ( i = 1; i < str.length() - 1; ++i ) {
if(Character.isLetter(str.charAt(i))) {
validated = false;
break;
}
}
}
return validated;
}
有更简单的方法吗?
答案 0 :(得分:3)
使用Java正则表达式:
public static void main(String[] args) {
Pattern p = Pattern.compile("[a-zA-Z][0-9]{6}[a-zA-Z]");
System.out.println(p.matcher("L123456X").matches()); // true
System.out.println(p.matcher("L12345X").matches()); // false
System.out.println(p.matcher("1234567X").matches()); // false
System.out.println(p.matcher("A1234567X").matches()); // false
}
如果您只想要大写字母。使用[A-Z] [0-9] {6} [A-Z]
注意:我们不必像某些开发人员那样添加^和$(对于java)
答案 1 :(得分:1)
是的,您需要查看regular expressions。您可以用这些表达式表达所有规则。一旦掌握了这种特殊语法,你就会喜欢它。这是beginners guide。使用this来测试结果表达式。
之后,您可以通过询问
在一个语句中测试您的输入Pattern.matches($your_expression, str);