使用正则表达式验证字段

时间:2013-08-29 04:45:43

标签: java android regex validation

抱歉不熟悉编程。显然我希望在发布之前了解有关该主题的所有内容。我这样做了3个星期,一边学习,一边学习。

我有一个限制为5个字符的字段,我正在尝试验证。第一个字符必须是字母,后面的4个字符必须是数字。在这一点上,正则表达式对我来说就像希腊语一样,所以我遇到了麻烦。我已经能够验证第一个字符了,但我对剩下的4个字符感到难过。这是我的代码:

if (carID.substring(0, 1).matches("[0-9]")) {
    showDataFormatError();
    break;
} else {
    if (carID.substring(1, 5).matches("[a-zA-Z]")) {
    showDataFormatError();
    break;
    }
}

此时更新以演示我可怕的编码。

            if (carID.length() < 5) {
                showDataLengthError();
                break;
            } else {
                if (carID.matches("^[a-zA-Z][0-9]{4}$")) {
                    showDataFormatError();
                    break;
                } else {
                    if (carYearString.length() < 0) {
                        showDateLengthError();
                        break;
                    } else {
                        try {
                            int carYear = Integer.parseInt(carYearString);
                            int currentYear = Calendar.getInstance().get(
                                    Calendar.YEAR);

// etc.

3 个答案:

答案 0 :(得分:2)

试试这个

boolean valid = carID.matches("^[a-zA-Z][0-9]{4}$");

请参阅the tutorial

编辑感谢我发现的选民,并修正了错误。

答案 1 :(得分:2)

如果要确保整个字符串是该格式,请使用:

^[a-zA-Z]\d{4}$

这将对您和教程有所帮助,您应该通过此链接

Regular Expression

答案 2 :(得分:1)

我会做类似的事情。

\pL       Matches Any kind of letter from any language.
\pN{4}    Matches Any kind of numeric character in any script. (4 times) greedy.

...

if (carID.length() > 5) throw IllegalArgumentException();

if (carID.matches("^\pL\pN{4}$")){
  return true;
} else {
  return false;

  ...
}