0

很抱歉对编程不熟悉。显然,在发布到这里之前,我应该了解有关该主题的所有信息。我只做了 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.
4

3 回答 3

2

尝试这个

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

并查看教程

编辑感谢我发现并修复了错误的投票者。

于 2013-08-29T04:49:52.907 回答
2

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

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

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

正则表达式

于 2013-08-29T05:21:19.463 回答
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;

  ...
}
于 2013-08-29T06:00:28.970 回答