根据某些规则验证文本

时间:2014-09-26 14:49:58

标签: java validation

我有一个文本,我需要根据以下规则对其进行验证:

  1. 文字长度必须为8个字符
  2. 文字必须有一个前导字母
  3. 文字必须有一个尾随字母
  4. 文字必须在2个字母之间有6个数字
  5. 一个很好的例子是: 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;
    }
    

    有更简单的方法吗?

2 个答案:

答案 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);